From: iceman1001 Date: Sun, 1 Nov 2015 18:49:08 +0000 (+0100) Subject: ADD: help text for 'hf snoop' / 'hf search' / 'hf list' X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/afa86e5c032a9d4037114082ddddd3c30f5c65f0 ADD: help text for 'hf snoop' / 'hf search' / 'hf list' CHG: minor code changes. CHG: makefile , moved hi_sniffer.v from LF into HF row. @piwi suggestion for PR https://github.com/Proxmark/proxmark3/pull/141 --- diff --git a/armsrc/hfsnoop.c b/armsrc/hfsnoop.c index b7d69013..755c24f6 100644 --- a/armsrc/hfsnoop.c +++ b/armsrc/hfsnoop.c @@ -20,7 +20,7 @@ static void RAMFUNC optimizedSnoop(void) if(AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { *dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR); - dest = dest + 1; + dest++; } } //Resetting Frame mode (First set in fpgaloader.c) @@ -65,7 +65,6 @@ void HfSnoop(int samplesToSkip, int triggersToSkip) waitcount--; } } - optimizedSnoop(); } diff --git a/client/cmddata.c b/client/cmddata.c index 010bf73c..e955fec7 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -58,12 +58,12 @@ int CmdSetDebugMode(const char *Cmd) } int usage_data_printdemodbuf(){ - PrintAndLog("Usage: data printdemodbuffer x o "); - PrintAndLog("Options: "); - PrintAndLog(" h This help"); - PrintAndLog(" x output in hex (omit for binary output)"); - PrintAndLog(" o enter offset in # of bits"); - return 0; + PrintAndLog("Usage: data printdemodbuffer x o "); + PrintAndLog("Options:"); + PrintAndLog(" h This help"); + PrintAndLog(" x output in hex (omit for binary output)"); + PrintAndLog(" o enter offset in # of bits"); + return 0; } //by marshmellow diff --git a/client/cmdhf.c b/client/cmdhf.c index d0b1f01c..f6fb3a99 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -602,73 +602,83 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui return tracepos; } +int usage_hf_list(){ + PrintAndLog("List protocol data in trace buffer."); + PrintAndLog("Usage: hf list [f][c]"); + PrintAndLog(" f - show frame delay times as well"); + PrintAndLog(" c - mark CRC bytes"); + PrintAndLog("Supported values:"); + PrintAndLog(" raw - just show raw data without annotations"); + PrintAndLog(" 14a - interpret data as iso14443a communications"); + PrintAndLog(" 14b - interpret data as iso14443b communications"); + PrintAndLog(" iclass - interpret data as iclass communications"); + PrintAndLog(" topaz - interpret data as topaz communications"); + PrintAndLog(" 7816 - interpret data as iso7816-4 communications"); + PrintAndLog(""); + PrintAndLog("example: hf list 14a f"); + PrintAndLog(" hf list iclass"); + return 0; +} +int usage_hf_search(){ + PrintAndLog("Usage: hf search"); + PrintAndLog("Will try to find a HF read out of the unknown tag. Stops when found."); + PrintAndLog("Options:"); + PrintAndLog(" h - This help"); + PrintAndLog(""); + return 0; +} +int usage_hf_snoop(){ + PrintAndLog("Usage: hf snoop "); + PrintAndLog("The high frequence snoop will assign all available memory on device for snooped data"); + PrintAndLog("User the 'data samples' command to download from device, and 'data plot' to look at it"); + PrintAndLog("Press button to quit the snooping."); + PrintAndLog("Options:"); + PrintAndLog(" h - This help"); + PrintAndLog(" - skip sample pairs"); + PrintAndLog(" - skip number of triggers"); + PrintAndLog(""); + PrintAndLog("example: hf snoop"); + PrintAndLog(" hf snoop 1000 0"); + return 0; +} int CmdHFList(const char *Cmd) { bool showWaitCycles = false; bool markCRCBytes = false; - char type[40] = {0}; - int tlen = param_getstr(Cmd,0,type); + char type[10] = {0}; + //int tlen = param_getstr(Cmd,0,type); char param1 = param_getchar(Cmd, 1); char param2 = param_getchar(Cmd, 2); bool errors = false; uint8_t protocol = 0; - //Validate params - - if(tlen == 0) { - errors = true; - } - - if(param1 == 'h' - || (param1 != 0 && param1 != 'f' && param1 != 'c') - || (param2 != 0 && param2 != 'f' && param2 != 'c')) { - errors = true; - } - - if(!errors) { - if(strcmp(type, "iclass") == 0) { - protocol = ICLASS; - } else if(strcmp(type, "14a") == 0) { - protocol = ISO_14443A; - } else if(strcmp(type, "14b") == 0) { - protocol = ISO_14443B; - } else if(strcmp(type,"topaz")== 0) { - protocol = TOPAZ; - } else if(strcmp(type,"7816")== 0) { - protocol = ISO_7816_4; - } else if(strcmp(type,"raw")== 0) { - protocol = -1;//No crc, no annotations - }else{ - errors = true; - } - } - if (errors) { - PrintAndLog("List protocol data in trace buffer."); - PrintAndLog("Usage: hf list [f][c]"); - PrintAndLog(" f - show frame delay times as well"); - PrintAndLog(" c - mark CRC bytes"); - PrintAndLog("Supported values:"); - PrintAndLog(" raw - just show raw data without annotations"); - PrintAndLog(" 14a - interpret data as iso14443a communications"); - PrintAndLog(" 14b - interpret data as iso14443b communications"); - PrintAndLog(" iclass - interpret data as iclass communications"); - PrintAndLog(" topaz - interpret data as topaz communications"); - PrintAndLog(" 7816 - interpret data as iso7816-4 communications"); - PrintAndLog(""); - PrintAndLog("example: hf list 14a f"); - PrintAndLog("example: hf list iclass"); - return 0; + //Validate params H or empty + if (strlen(Cmd) < 1 || param1 == 'h' || param1 == 'H') return usage_hf_list(); + + //Validate params F,C + if( + (param1 != 0 && param1 != 'f' && param1 != 'c') || + (param2 != 0 && param2 != 'f' && param2 != 'c') + ) { + return usage_hf_list(); } + param_getstr(Cmd,0,type); + + // validate type of output + if(strcmp(type, "iclass") == 0) protocol = ICLASS; + else if(strcmp(type, "14a") == 0) protocol = ISO_14443A; + else if(strcmp(type, "14b") == 0) protocol = ISO_14443B; + else if(strcmp(type, "topaz")== 0) protocol = TOPAZ; + else if(strcmp(type, "7816")== 0) protocol = ISO_7816_4; + else if(strcmp(type, "raw")== 0) protocol = -1;//No crc, no annotations + else errors = true; - if (param1 == 'f' || param2 == 'f') { - showWaitCycles = true; - } + if (errors) return usage_hf_list(); - if (param1 == 'c' || param2 == 'c') { - markCRCBytes = true; - } + if (param1 == 'f' || param2 == 'f') showWaitCycles = true; + if (param1 == 'c' || param2 == 'c') markCRCBytes = true; uint8_t *trace; uint16_t tracepos = 0; @@ -710,9 +720,13 @@ int CmdHFList(const char *Cmd) } int CmdHFSearch(const char *Cmd){ - int ans = 0; + + char cmdp = param_getchar(Cmd, 0); + if (cmdp == 'h' || cmdp == 'H') return usage_hf_search(); + PrintAndLog(""); - ans = CmdHF14AReader("s"); + int ans = CmdHF14AReader("s"); + if (ans > 0) { PrintAndLog("\nValid ISO14443A Tag Found - Quiting Search\n"); return ans; @@ -738,8 +752,13 @@ int CmdHFSearch(const char *Cmd){ int CmdHFSnoop(const char *Cmd) { - char * pEnd; - UsbCommand c = {CMD_HF_SNIFFER, {strtol(Cmd, &pEnd,0),strtol(pEnd, &pEnd,0),0}}; + char cmdp = param_getchar(Cmd, 0); + if (cmdp == 'h' || cmdp == 'H') return usage_hf_snoop(); + + int skippairs = param_get32ex(Cmd, 0, 0, 10); + int skiptriggers = param_get32ex(Cmd, 1, 0, 10); + + UsbCommand c = {CMD_HF_SNIFFER, {skippairs,skiptriggers,0}}; SendCommand(&c); return 0; } diff --git a/fpga/Makefile b/fpga/Makefile index e58d6fc4..c1ff5087 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -5,11 +5,11 @@ clean: $(DELETE) *.bgn *.drc *.ncd *.ngd *_par.xrpt *-placed.* *-placed_pad.* *_usage.xml xst_hf.srp xst_lf.srp $(DELETE) *.map *.ngc *.xrpt *.pcf *.rbt *_auto_* *.bld *.mrp *.ngm *.unroutes *_summary.xml netlist.lst xst -fpga_hf.ngc: fpga_hf.v fpga.ucf xst_hf.scr util.v hi_simulate.v hi_read_tx.v hi_read_rx_xcorr.v hi_iso14443a.v +fpga_hf.ngc: fpga_hf.v fpga.ucf xst_hf.scr util.v hi_simulate.v hi_read_tx.v hi_read_rx_xcorr.v hi_iso14443a.v hi_sniffer.v $(DELETE) $@ $(XILINX_TOOLS_PREFIX)xst -ifn xst_hf.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 hi_sniffer.v +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 $(DELETE) $@ $(XILINX_TOOLS_PREFIX)xst -ifn xst_lf.scr