mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 04:49:38 -07:00
Implemented 'hw status' and 'hw ping', put back client-side cacheing of 'hw version'
This commit is contained in:
parent
85f011a550
commit
e2012d1bd3
11 changed files with 96 additions and 19 deletions
|
@ -88,6 +88,16 @@ void BigBuf_free_keep_EM(void)
|
|||
}
|
||||
}
|
||||
|
||||
void BigBuf_print_status(void)
|
||||
{
|
||||
Dbprintf("Memory");
|
||||
Dbprintf(" BIGBUF_SIZE.............%d", BIGBUF_SIZE);
|
||||
Dbprintf(" BigBuf_hi .............%d", BigBuf_hi);
|
||||
Dbprintf("Tracing");
|
||||
Dbprintf(" tracing ................%d", tracing);
|
||||
Dbprintf(" traceLen ...............%d", traceLen);
|
||||
}
|
||||
|
||||
|
||||
// return the maximum trace length (i.e. the unallocated size of BigBuf)
|
||||
uint16_t BigBuf_max_traceLen(void)
|
||||
|
|
|
@ -28,7 +28,7 @@ extern void BigBuf_Clear(void);
|
|||
extern uint8_t *BigBuf_malloc(uint16_t);
|
||||
extern void BigBuf_free(void);
|
||||
extern void BigBuf_free_keep_EM(void);
|
||||
|
||||
extern void BigBuf_print_status(void);
|
||||
extern uint16_t BigBuf_get_traceLen(void);
|
||||
extern void clear_trace();
|
||||
extern void set_tracing(bool enable);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <hitag2.h>
|
||||
#include "lfsampling.h"
|
||||
#include "BigBuf.h"
|
||||
#include "mifareutil.h"
|
||||
#ifdef WITH_LCD
|
||||
#include "LCD.h"
|
||||
#endif
|
||||
|
@ -297,6 +298,19 @@ void SendVersion(void)
|
|||
uint32_t compressed_data_section_size = common_area.arg1;
|
||||
cmd_send(CMD_ACK, *(AT91C_DBGU_CIDR), text_and_rodata_section_size + compressed_data_section_size, 0, VersionString, strlen(VersionString));
|
||||
}
|
||||
/**
|
||||
* Prints runtime information about the PM3.
|
||||
**/
|
||||
void SendStatus(void)
|
||||
{
|
||||
BigBuf_print_status();
|
||||
Fpga_print_status();
|
||||
printConfig(); //LF Sampling config
|
||||
Dbprintf("Various");
|
||||
Dbprintf(" MF_DBGLEVEL......%d", MF_DBGLEVEL);
|
||||
Dbprintf(" ToSendMax........%d",ToSendMax);
|
||||
Dbprintf(" ToSendBit........%d",ToSendBit);
|
||||
}
|
||||
|
||||
#if defined(WITH_ISO14443a_StandAlone) || defined(WITH_LF)
|
||||
|
||||
|
@ -1143,7 +1157,12 @@ void UsbPacketReceived(uint8_t *packet, int len)
|
|||
case CMD_VERSION:
|
||||
SendVersion();
|
||||
break;
|
||||
|
||||
case CMD_STATUS:
|
||||
SendStatus();
|
||||
break;
|
||||
case CMD_PING:
|
||||
cmd_send(CMD_ACK,0,0,0,0,0);
|
||||
break;
|
||||
#ifdef WITH_LCD
|
||||
case CMD_LCD_RESET:
|
||||
LCDReset();
|
||||
|
|
|
@ -558,3 +558,11 @@ void SetAdcMuxFor(uint32_t whichGpio)
|
|||
|
||||
HIGH(whichGpio);
|
||||
}
|
||||
|
||||
void Fpga_print_status(void)
|
||||
{
|
||||
Dbprintf("Fgpa");
|
||||
if(downloaded_bitstream == FPGA_BITSTREAM_HF) Dbprintf(" mode.............HF");
|
||||
else if(downloaded_bitstream == FPGA_BITSTREAM_LF) Dbprintf(" mode.............LF");
|
||||
else Dbprintf(" mode.............%d", downloaded_bitstream);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ void FpgaGatherVersion(int bitstream_version, char *dst, int len);
|
|||
void FpgaSetupSsc(void);
|
||||
void SetupSpi(int mode);
|
||||
bool FpgaSetupSscDma(uint8_t *buf, int len);
|
||||
void Fpga_print_status();
|
||||
#define FpgaDisableSscDma(void) AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTDIS;
|
||||
#define FpgaEnableSscDma(void) AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTEN;
|
||||
void SetAdcMuxFor(uint32_t whichGpio);
|
||||
|
|
|
@ -17,7 +17,7 @@ sample_config config = { 1, 8, 1, 95, 0 } ;
|
|||
|
||||
void printConfig()
|
||||
{
|
||||
Dbprintf("Sampling config: ");
|
||||
Dbprintf("LF Sampling config: ");
|
||||
Dbprintf(" [q] divisor: %d ", config.divisor);
|
||||
Dbprintf(" [b] bps: %d ", config.bits_per_sample);
|
||||
Dbprintf(" [d] decimation: %d ", config.decimation);
|
||||
|
|
|
@ -56,4 +56,8 @@ void LFSetupFPGAForADC(int divisor, bool lf_field);
|
|||
void setSamplingConfig(sample_config *sc);
|
||||
|
||||
sample_config * getSamplingConfig();
|
||||
|
||||
void printConfig();
|
||||
|
||||
|
||||
#endif // LFSAMPLING_H
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// code for work with mifare cards.
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "crapto1.h"
|
||||
|
||||
#ifndef __MIFAREUTIL_H
|
||||
#define __MIFAREUTIL_H
|
||||
|
|
|
@ -405,16 +405,45 @@ int CmdTune(const char *Cmd)
|
|||
int CmdVersion(const char *Cmd)
|
||||
{
|
||||
|
||||
clearCommandBuffer();
|
||||
UsbCommand c = {CMD_VERSION};
|
||||
UsbCommand resp = {0, {0, 0, 0}};
|
||||
static UsbCommand resp = {0, {0, 0, 0}};
|
||||
|
||||
if (resp.arg[0] == 0 && resp.arg[1] == 0) { // no cached information available
|
||||
SendCommand(&c);
|
||||
if (WaitForResponseTimeout(CMD_ACK,&resp,1000)) {
|
||||
PrintAndLog("Prox/RFID mark3 RFID instrument");
|
||||
PrintAndLog((char*)resp.d.asBytes);
|
||||
lookupChipID(resp.arg[0], resp.arg[1]);
|
||||
}
|
||||
} else {
|
||||
PrintAndLog("[[[ Cached information ]]]\n");
|
||||
PrintAndLog("Prox/RFID mark3 RFID instrument");
|
||||
PrintAndLog((char*)resp.d.asBytes);
|
||||
lookupChipID(resp.arg[0], resp.arg[1]);
|
||||
PrintAndLog("");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CmdStatus(const char *Cmd)
|
||||
{
|
||||
UsbCommand c = {CMD_STATUS};
|
||||
SendCommand(&c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CmdPing(const char *Cmd)
|
||||
{
|
||||
clearCommandBuffer();
|
||||
UsbCommand resp;
|
||||
UsbCommand c = {CMD_PING};
|
||||
SendCommand(&c);
|
||||
if (WaitForResponseTimeout(CMD_ACK,&resp,1000)) {
|
||||
PrintAndLog("Ping successfull");
|
||||
}else{
|
||||
PrintAndLog("Ping failed");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -431,6 +460,8 @@ static command_t CommandTable[] =
|
|||
{"setmux", CmdSetMux, 0, "<loraw|hiraw|lopkd|hipkd> -- Set the ADC mux to a specific value"},
|
||||
{"tune", CmdTune, 0, "Measure antenna tuning"},
|
||||
{"version", CmdVersion, 0, "Show version information about the connected Proxmark"},
|
||||
{"status", CmdStatus, 0, "Show runtime status information about the connected Proxmark"},
|
||||
{"ping", CmdPing, 0, "Test if the pm3 is responsive"},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@ local _commands = {
|
|||
CMD_BUFF_CLEAR = 0x0105,
|
||||
CMD_READ_MEM = 0x0106,
|
||||
CMD_VERSION = 0x0107,
|
||||
|
||||
CMD_STATUS = 0x0108,
|
||||
CMD_PING = 0x0109,
|
||||
--// For low-frequency tags
|
||||
CMD_READ_TI_TYPE = 0x0202,
|
||||
CMD_WRITE_TI_TYPE = 0x0203,
|
||||
|
|
|
@ -60,6 +60,8 @@ typedef struct{
|
|||
#define CMD_BUFF_CLEAR 0x0105
|
||||
#define CMD_READ_MEM 0x0106
|
||||
#define CMD_VERSION 0x0107
|
||||
#define CMD_STATUS 0x0108
|
||||
#define CMD_PING 0x0109
|
||||
|
||||
// For low-frequency tags
|
||||
#define CMD_READ_TI_TYPE 0x0202
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue