From 30364d271166fd7359ff88d4b4fc22d63395ed9d Mon Sep 17 00:00:00 2001 From: pwpiwi <pwpiwi@users.noreply.github.com> Date: Mon, 9 Mar 2015 20:01:37 +0100 Subject: [PATCH 1/2] fix: broken edge detector implementation in hi_iso14443a.v resulted in decreased sensitivity --- fpga/fpga_hf.bit | Bin 42175 -> 42175 bytes fpga/hi_iso14443a.v | 61 ++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/fpga/fpga_hf.bit b/fpga/fpga_hf.bit index 4910e6ac50d6e3cb405bacee3eef47de443b0147..20fb2bd4401254d899d6273451bfccbd827f562b 100644 GIT binary patch literal 42175 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 literal 42175 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 S@ZWLO0seoql9uvb@_zvy&2EtZ diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 46adda12c..ccb51d8fb 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -112,34 +112,26 @@ end // 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; -// convert to signed signals (and multiply by two for samples at t-4 and t) -wire signed [10:0] input_prev_4_times_2 = {0, 0, input_prev_4, 0}; -wire signed [10:0] input_prev_3_times_1 = {0, 0, 0, input_prev_3}; -wire signed [10:0] input_prev_1_times_1 = {0, 0, 0, input_prev_1}; -wire signed [10:0] adc_d_times_2 = {0, 0, adc_d, 0}; -wire signed [10:0] tmp_1, tmp_2; -wire signed [10:0] adc_d_filtered; -integer i; - -assign tmp_1 = input_prev_4_times_2 + input_prev_3_times_1; -assign tmp_2 = input_prev_1_times_1 + adc_d_times_2; - always @(negedge adc_clk) begin - // for (i = 3; i > 0; i = i - 1) - // begin - // input_shift[i] <= input_shift[i-1]; - // end - // input_shift[0] <= adc_d; input_prev_4 <= input_prev_3; input_prev_3 <= input_prev_2; input_prev_2 <= input_prev_1; input_prev_1 <= adc_d; end -// assign adc_d_filtered = (input_shift[3] << 1) + input_shift[2] - input_shift[0] - (adc_d << 1); -assign adc_d_filtered = tmp_1 - tmp_2; +// 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}; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -194,11 +186,13 @@ reg [3:0] mod_detect_reset_time; always @(negedge adc_clk) begin if (mod_type == `READER_LISTEN) - // (our) reader signal changes at t=1, tag response expected n*16+4 ticks later, further delayed by - // 3 ticks ADC conversion. - // 1 + 4 + 3 = 8 + // (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'd8; + mod_detect_reset_time <= 4'd4; end else if (mod_type == `SNIFFER) @@ -207,10 +201,10 @@ begin 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. - // The tag will respond n*16 + 4 ticks later + 3 ticks A/D converter delay. - // - 9 - 3 - 1 + 4 + 3 = -6 + // Then the same as above. + // - 9 - 3 - 1 + 4 + 3 + 7 - 4 = -3 begin - mod_detect_reset_time <= negedge_cnt[3:0] - 4'd4; + mod_detect_reset_time <= negedge_cnt[3:0] - 4'd3; end end end @@ -224,12 +218,14 @@ reg signed [10:0] rx_mod_falling_edge_max; reg signed [10:0] rx_mod_rising_edge_max; reg curbit; +`define EDGE_DETECT_THRESHOLD 5 + always @(negedge adc_clk) begin if(negedge_cnt[3:0] == mod_detect_reset_time) begin // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if (rx_mod_falling_edge_max > 5 && rx_mod_rising_edge_max > 5) + 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 @@ -246,8 +242,8 @@ begin end else begin - if (-adc_d_filtered > rx_mod_rising_edge_max) - rx_mod_rising_edge_max <= -adc_d_filtered; + if (adc_d_filtered < rx_mod_rising_edge_max) + rx_mod_rising_edge_max <= adc_d_filtered; end end @@ -273,7 +269,7 @@ end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Tag: +// 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; @@ -297,7 +293,7 @@ end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PM3 -> Tag, internal timing: +// 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 @@ -477,11 +473,10 @@ end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// FPGA -> ARM communication: +// 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; -reg [2:0] ssp_frame_counter; always @(negedge adc_clk) begin From 16a95d76ac51d07ca56ecf6761fc3a2155bf93a9 Mon Sep 17 00:00:00 2001 From: pwpiwi <pwpiwi@users.noreply.github.com> Date: Mon, 9 Mar 2015 21:36:27 +0100 Subject: [PATCH 2/2] fix: (issue #73) hf mf cload didn't work. Add more annotations for Magic Cards operation. --- client/cmdhf.c | 28 +++++++++++++++------------- client/cmdhfmf.c | 15 +++++++-------- common/protocols.h | 4 +++- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/client/cmdhf.c b/client/cmdhf.c index 074a37e28..22063bbbe 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -62,19 +62,21 @@ void annotateIso14443a(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) snprintf(exp,size,"ANTICOLL-2"); break; } } - case ISO14443A_CMD_REQA: snprintf(exp,size,"REQA"); break; - case ISO14443A_CMD_READBLOCK: snprintf(exp,size,"READBLOCK(%d)",cmd[1]); break; - case ISO14443A_CMD_WRITEBLOCK: snprintf(exp,size,"WRITEBLOCK(%d)",cmd[1]); break; - case ISO14443A_CMD_HALT: snprintf(exp,size,"HALT"); break; - case ISO14443A_CMD_RATS: snprintf(exp,size,"RATS"); break; - case MIFARE_CMD_INC: snprintf(exp,size,"INC(%d)",cmd[1]); break; - case MIFARE_CMD_DEC: snprintf(exp,size,"DEC(%d)",cmd[1]); break; - case MIFARE_CMD_RESTORE: snprintf(exp,size,"RESTORE(%d)",cmd[1]); break; - case MIFARE_CMD_TRANSFER: snprintf(exp,size,"TRANSFER(%d)",cmd[1]); break; - case MIFARE_AUTH_KEYA: snprintf(exp,size,"AUTH-A(%d)",cmd[1]); break; - case MIFARE_AUTH_KEYB: snprintf(exp,size,"AUTH-B(%d)",cmd[1]); break; - case MIFARE_MAGICMODE: snprintf(exp,size,"MAGIC"); break; - default: snprintf(exp,size,"?"); break; + case ISO14443A_CMD_REQA: snprintf(exp,size,"REQA"); break; + case ISO14443A_CMD_READBLOCK: snprintf(exp,size,"READBLOCK(%d)",cmd[1]); break; + case ISO14443A_CMD_WRITEBLOCK: snprintf(exp,size,"WRITEBLOCK(%d)",cmd[1]); break; + case ISO14443A_CMD_HALT: snprintf(exp,size,"HALT"); break; + case ISO14443A_CMD_RATS: snprintf(exp,size,"RATS"); break; + case MIFARE_CMD_INC: snprintf(exp,size,"INC(%d)",cmd[1]); break; + case MIFARE_CMD_DEC: snprintf(exp,size,"DEC(%d)",cmd[1]); break; + case MIFARE_CMD_RESTORE: snprintf(exp,size,"RESTORE(%d)",cmd[1]); break; + case MIFARE_CMD_TRANSFER: snprintf(exp,size,"TRANSFER(%d)",cmd[1]); break; + case MIFARE_AUTH_KEYA: snprintf(exp,size,"AUTH-A(%d)",cmd[1]); break; + case MIFARE_AUTH_KEYB: snprintf(exp,size,"AUTH-B(%d)",cmd[1]); break; + case MIFARE_MAGICWUPC1: snprintf(exp,size,"MAGIC WUPC1"); break; + case MIFARE_MAGICWUPC2: snprintf(exp,size,"MAGIC WUPC2"); break; + case MIFARE_MAGICWIPEC: snprintf(exp,size,"MAGIC WIPEC"); break; + default: snprintf(exp,size,"?"); break; } return; } diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index d0852ea5b..c16b96741 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -1554,15 +1554,14 @@ int CmdHF14AMfCLoad(const char *Cmd) if (ctmp == 'e' || ctmp == 'E') fillFromEmulator = 1; if (fillFromEmulator) { - flags = CSETBLOCK_INIT_FIELD + CSETBLOCK_WUPC; for (blockNum = 0; blockNum < 16 * 4; blockNum += 1) { if (mfEmlGetMem(buf8, blockNum, 1)) { PrintAndLog("Cant get block: %d", blockNum); return 2; } - - if (blockNum == 2) flags = 0; - if (blockNum == 16 * 4 - 1) flags = CSETBLOCK_HALT + CSETBLOCK_RESET_FIELD; + if (blockNum == 0) flags = CSETBLOCK_INIT_FIELD + CSETBLOCK_WUPC; // switch on field and send magic sequence + if (blockNum == 1) flags = 0; // just write + if (blockNum == 16 * 4 - 1) flags = CSETBLOCK_HALT + CSETBLOCK_RESET_FIELD; // Done. Magic Halt and switch off field. if (mfCSetBlock(blockNum, buf8, NULL, 0, flags)) { PrintAndLog("Cant set magic card block: %d", blockNum); @@ -1587,7 +1586,6 @@ int CmdHF14AMfCLoad(const char *Cmd) } blockNum = 0; - flags = CSETBLOCK_INIT_FIELD + CSETBLOCK_WUPC; while(!feof(f)){ memset(buf, 0, sizeof(buf)); @@ -1597,7 +1595,7 @@ int CmdHF14AMfCLoad(const char *Cmd) return 2; } - if (strlen(buf) < 32){ + if (strlen(buf) < 32) { if(strlen(buf) && feof(f)) break; PrintAndLog("File content error. Block data must include 32 HEX symbols"); @@ -1606,8 +1604,9 @@ int CmdHF14AMfCLoad(const char *Cmd) for (i = 0; i < 32; i += 2) sscanf(&buf[i], "%02x", (unsigned int *)&buf8[i / 2]); - if (blockNum == 2) flags = 0; - if (blockNum == 16 * 4 - 1) flags = CSETBLOCK_HALT + CSETBLOCK_RESET_FIELD; + if (blockNum == 0) flags = CSETBLOCK_INIT_FIELD + CSETBLOCK_WUPC; // switch on field and send magic sequence + if (blockNum == 1) flags = 0; // just write + if (blockNum == 16 * 4 - 1) flags = CSETBLOCK_HALT + CSETBLOCK_RESET_FIELD; // Done. Switch off field. if (mfCSetBlock(blockNum, buf8, NULL, 0, flags)) { PrintAndLog("Can't set magic card block: %d", blockNum); diff --git a/common/protocols.h b/common/protocols.h index 1dd661850..01b738c2b 100644 --- a/common/protocols.h +++ b/common/protocols.h @@ -115,7 +115,9 @@ NXP/Philips CUSTOM COMMANDS #define MIFARE_AUTH_KEYA 0x60 #define MIFARE_AUTH_KEYB 0x61 -#define MIFARE_MAGICMODE 0x40 +#define MIFARE_MAGICWUPC1 0x40 +#define MIFARE_MAGICWUPC2 0x43 +#define MIFARE_MAGICWIPEC 0x41 #define MIFARE_CMD_INC 0xC0 #define MIFARE_CMD_DEC 0xC1 #define MIFARE_CMD_RESTORE 0xC2