mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
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
This commit is contained in:
parent
eb4222d773
commit
afa86e5c03
4 changed files with 85 additions and 67 deletions
|
@ -20,7 +20,7 @@ static void RAMFUNC optimizedSnoop(void)
|
||||||
if(AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY)
|
if(AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY)
|
||||||
{
|
{
|
||||||
*dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR);
|
*dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR);
|
||||||
dest = dest + 1;
|
dest++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Resetting Frame mode (First set in fpgaloader.c)
|
//Resetting Frame mode (First set in fpgaloader.c)
|
||||||
|
@ -65,7 +65,6 @@ void HfSnoop(int samplesToSkip, int triggersToSkip)
|
||||||
waitcount--;
|
waitcount--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
optimizedSnoop();
|
optimizedSnoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,12 +58,12 @@ int CmdSetDebugMode(const char *Cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
int usage_data_printdemodbuf(){
|
int usage_data_printdemodbuf(){
|
||||||
PrintAndLog("Usage: data printdemodbuffer x o <offset>");
|
PrintAndLog("Usage: data printdemodbuffer x o <offset>");
|
||||||
PrintAndLog("Options: ");
|
PrintAndLog("Options:");
|
||||||
PrintAndLog(" h This help");
|
PrintAndLog(" h This help");
|
||||||
PrintAndLog(" x output in hex (omit for binary output)");
|
PrintAndLog(" x output in hex (omit for binary output)");
|
||||||
PrintAndLog(" o <offset> enter offset in # of bits");
|
PrintAndLog(" o <offset> enter offset in # of bits");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//by marshmellow
|
//by marshmellow
|
||||||
|
|
133
client/cmdhf.c
133
client/cmdhf.c
|
@ -602,73 +602,83 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
|
||||||
return tracepos;
|
return tracepos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int usage_hf_list(){
|
||||||
|
PrintAndLog("List protocol data in trace buffer.");
|
||||||
|
PrintAndLog("Usage: hf list <protocol> [f][c]");
|
||||||
|
PrintAndLog(" f - show frame delay times as well");
|
||||||
|
PrintAndLog(" c - mark CRC bytes");
|
||||||
|
PrintAndLog("Supported <protocol> 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 <skip pairs> <skip triggers>");
|
||||||
|
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 pairs> - skip sample pairs");
|
||||||
|
PrintAndLog(" <skip triggers> - skip number of triggers");
|
||||||
|
PrintAndLog("");
|
||||||
|
PrintAndLog("example: hf snoop");
|
||||||
|
PrintAndLog(" hf snoop 1000 0");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int CmdHFList(const char *Cmd)
|
int CmdHFList(const char *Cmd)
|
||||||
{
|
{
|
||||||
bool showWaitCycles = false;
|
bool showWaitCycles = false;
|
||||||
bool markCRCBytes = false;
|
bool markCRCBytes = false;
|
||||||
char type[40] = {0};
|
char type[10] = {0};
|
||||||
int tlen = param_getstr(Cmd,0,type);
|
//int tlen = param_getstr(Cmd,0,type);
|
||||||
char param1 = param_getchar(Cmd, 1);
|
char param1 = param_getchar(Cmd, 1);
|
||||||
char param2 = param_getchar(Cmd, 2);
|
char param2 = param_getchar(Cmd, 2);
|
||||||
bool errors = false;
|
bool errors = false;
|
||||||
uint8_t protocol = 0;
|
uint8_t protocol = 0;
|
||||||
//Validate params
|
|
||||||
|
|
||||||
if(tlen == 0) {
|
//Validate params H or empty
|
||||||
errors = true;
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(param1 == 'h'
|
param_getstr(Cmd,0,type);
|
||||||
|| (param1 != 0 && param1 != 'f' && param1 != 'c')
|
|
||||||
|| (param2 != 0 && param2 != 'f' && param2 != 'c')) {
|
// validate type of output
|
||||||
errors = true;
|
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) {
|
if (errors) return usage_hf_list();
|
||||||
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) {
|
if (param1 == 'f' || param2 == 'f') showWaitCycles = true;
|
||||||
PrintAndLog("List protocol data in trace buffer.");
|
if (param1 == 'c' || param2 == 'c') markCRCBytes = true;
|
||||||
PrintAndLog("Usage: hf list <protocol> [f][c]");
|
|
||||||
PrintAndLog(" f - show frame delay times as well");
|
|
||||||
PrintAndLog(" c - mark CRC bytes");
|
|
||||||
PrintAndLog("Supported <protocol> 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (param1 == 'f' || param2 == 'f') {
|
|
||||||
showWaitCycles = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param1 == 'c' || param2 == 'c') {
|
|
||||||
markCRCBytes = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *trace;
|
uint8_t *trace;
|
||||||
uint16_t tracepos = 0;
|
uint16_t tracepos = 0;
|
||||||
|
@ -710,9 +720,13 @@ int CmdHFList(const char *Cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
int CmdHFSearch(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("");
|
PrintAndLog("");
|
||||||
ans = CmdHF14AReader("s");
|
int ans = CmdHF14AReader("s");
|
||||||
|
|
||||||
if (ans > 0) {
|
if (ans > 0) {
|
||||||
PrintAndLog("\nValid ISO14443A Tag Found - Quiting Search\n");
|
PrintAndLog("\nValid ISO14443A Tag Found - Quiting Search\n");
|
||||||
return ans;
|
return ans;
|
||||||
|
@ -738,8 +752,13 @@ int CmdHFSearch(const char *Cmd){
|
||||||
|
|
||||||
int CmdHFSnoop(const char *Cmd)
|
int CmdHFSnoop(const char *Cmd)
|
||||||
{
|
{
|
||||||
char * pEnd;
|
char cmdp = param_getchar(Cmd, 0);
|
||||||
UsbCommand c = {CMD_HF_SNIFFER, {strtol(Cmd, &pEnd,0),strtol(pEnd, &pEnd,0),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);
|
SendCommand(&c);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,11 @@ clean:
|
||||||
$(DELETE) *.bgn *.drc *.ncd *.ngd *_par.xrpt *-placed.* *-placed_pad.* *_usage.xml xst_hf.srp xst_lf.srp
|
$(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
|
$(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) $@
|
$(DELETE) $@
|
||||||
$(XILINX_TOOLS_PREFIX)xst -ifn xst_hf.scr
|
$(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) $@
|
$(DELETE) $@
|
||||||
$(XILINX_TOOLS_PREFIX)xst -ifn xst_lf.scr
|
$(XILINX_TOOLS_PREFIX)xst -ifn xst_lf.scr
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue