mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-02-24 23:54:42 +08:00
Added em410xread, em410xsim, em410xread, bitstream, manmod, detectclock commands. Added an offline mode. Improved manchester demod routine, auto-detect clock rate in various routines.
This commit is contained in:
parent
e6b13a5718
commit
9760414b96
4 changed files with 741 additions and 231 deletions
File diff suppressed because it is too large
Load diff
|
@ -33,7 +33,6 @@ void dbp(char *str, ...)
|
||||||
|
|
||||||
int GraphBuffer[MAX_GRAPH_TRACE_LEN];
|
int GraphBuffer[MAX_GRAPH_TRACE_LEN];
|
||||||
int GraphTraceLen;
|
int GraphTraceLen;
|
||||||
int offline; // Whether the GUI operates in Offline mode.
|
|
||||||
|
|
||||||
HPEN GreyPen, GreenPen, WhitePen, YellowPen;
|
HPEN GreyPen, GreenPen, WhitePen, YellowPen;
|
||||||
HBRUSH GreenBrush, YellowBrush;
|
HBRUSH GreenBrush, YellowBrush;
|
||||||
|
@ -384,7 +383,7 @@ static void SetCommandEditTo(char *str)
|
||||||
SendMessage(CommandEdit, EM_SETSEL, strlen(str), strlen(str));
|
SendMessage(CommandEdit, EM_SETSEL, strlen(str), strlen(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowGui(void)
|
void ShowGui()
|
||||||
{
|
{
|
||||||
WNDCLASSEX wc;
|
WNDCLASSEX wc;
|
||||||
memset(&wc, 0, sizeof(wc));
|
memset(&wc, 0, sizeof(wc));
|
||||||
|
@ -505,9 +504,11 @@ void ShowGui(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UsbCommand c;
|
if (!offline)
|
||||||
if(ReceiveCommandPoll(&c)) {
|
{
|
||||||
UsbCommandReceived(&c);
|
UsbCommand c;
|
||||||
|
if(ReceiveCommandPoll(&c))
|
||||||
|
UsbCommandReceived(&c);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sleep(10);
|
Sleep(10);
|
||||||
|
|
|
@ -13,6 +13,7 @@ extern "C" {
|
||||||
#define OUR_VID 0x9ac4
|
#define OUR_VID 0x9ac4
|
||||||
#define OUR_PID 0x4b8f
|
#define OUR_PID 0x4b8f
|
||||||
|
|
||||||
|
int offline = 0;
|
||||||
HANDLE UsbHandle;
|
HANDLE UsbHandle;
|
||||||
|
|
||||||
static void ShowError(void)
|
static void ShowError(void)
|
||||||
|
@ -326,30 +327,35 @@ static void LoadFlashFromSRecords(char *file, int addr)
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if(argc < 2) {
|
if(argc < 2) {
|
||||||
printf("Usage: %s bootrom file.s19\n", argv[0]);
|
printf("Usage: %s bootrom file.s19\n", argv[0]);
|
||||||
printf(" %s load osimage.s19\n", argv[0]);
|
printf(" %s load osimage.s19\n", argv[0]);
|
||||||
printf(" %s fpga fpgaimg.s19\n", argv[0]);
|
printf(" %s fpga fpgaimg.s19\n", argv[0]);
|
||||||
printf(" %s gui\n", argv[0]);
|
printf(" %s gui\n", argv[0]);
|
||||||
|
printf(" %s offline\n", argv[0]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(;;) {
|
// Only do this if NOT in offline mode
|
||||||
if(UsbConnect()) {
|
if (strcmp(argv[1], "offline"))
|
||||||
break;
|
{
|
||||||
|
for(;;) {
|
||||||
|
if(UsbConnect()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(i == 0) {
|
||||||
|
printf("...no device connected, polling for it now\n");
|
||||||
|
}
|
||||||
|
if(i > 50000) {
|
||||||
|
printf("Could not connect to USB device; exiting.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
Sleep(5);
|
||||||
}
|
}
|
||||||
if(i == 0) {
|
|
||||||
printf("...no device connected, polling for it now\n");
|
|
||||||
}
|
|
||||||
if(i > 50000) {
|
|
||||||
printf("Could not connect to USB device; exiting.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
Sleep(5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(argv[1], "bootrom")==0 || strcmp(argv[1], "load")==0 || strcmp(argv[1], "fpga")==0) {
|
if(strcmp(argv[1], "bootrom")==0 || strcmp(argv[1], "load")==0 || strcmp(argv[1], "fpga")==0) {
|
||||||
if(argc != 3) {
|
if(argc != 3) {
|
||||||
printf("Need filename.\n");
|
printf("Need filename.\n");
|
||||||
|
@ -364,6 +370,9 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
} else if(strcmp(argv[1], "gui")==0) {
|
} else if(strcmp(argv[1], "gui")==0) {
|
||||||
ShowGui();
|
ShowGui();
|
||||||
|
} else if(strcmp(argv[1], "offline")==0) {
|
||||||
|
offline = 1;
|
||||||
|
ShowGui();
|
||||||
} else if(strcmp(argv[1], "cmd")==0) {
|
} else if(strcmp(argv[1], "cmd")==0) {
|
||||||
if(argc != 3) {
|
if(argc != 3) {
|
||||||
printf("Need command.\n");
|
printf("Need command.\n");
|
||||||
|
|
|
@ -9,7 +9,7 @@ BOOL ReceiveCommandPoll(UsbCommand *c);
|
||||||
void SendCommand(UsbCommand *c, BOOL wantAck);
|
void SendCommand(UsbCommand *c, BOOL wantAck);
|
||||||
|
|
||||||
// gui.cpp
|
// gui.cpp
|
||||||
void ShowGui(void);
|
void ShowGui();
|
||||||
void HideGraphWindow(void);
|
void HideGraphWindow(void);
|
||||||
void ShowGraphWindow(void);
|
void ShowGraphWindow(void);
|
||||||
void RepaintGraphWindow(void);
|
void RepaintGraphWindow(void);
|
||||||
|
@ -19,13 +19,82 @@ extern int GraphBuffer[MAX_GRAPH_TRACE_LEN];
|
||||||
extern int GraphTraceLen;
|
extern int GraphTraceLen;
|
||||||
extern double CursorScaleFactor;
|
extern double CursorScaleFactor;
|
||||||
extern int CommandFinished;
|
extern int CommandFinished;
|
||||||
extern int offline; // Set to 1 if the proxmark is offline
|
extern int offline;
|
||||||
|
|
||||||
|
|
||||||
// command.cpp
|
// command.cpp
|
||||||
|
static void GetFromBigBuf(BYTE *dest, int bytes);
|
||||||
|
static void CmdReset(char *str);
|
||||||
|
static void CmdQuit(char *str);
|
||||||
|
static void CmdEM410xread(char *str);
|
||||||
|
static void CmdEM410xwatch(char *str);
|
||||||
|
static void ChkBitstream(char *str);
|
||||||
|
int GetClock(char *str, int peak);
|
||||||
|
static void CmdHIDdemodFSK(char *str);
|
||||||
|
static void Cmdmanchestermod(char *str);
|
||||||
|
static void CmdTune(char *str);
|
||||||
|
static void CmdHi15read(char *str);
|
||||||
|
static void CmdHi14read(char *str);
|
||||||
|
static void CmdSri512read(char *str);
|
||||||
|
static void CmdHi14areader(char *str);
|
||||||
|
static void CmdHi15reader(char *str);
|
||||||
|
static void CmdHi15tag(char *str);
|
||||||
|
static void CmdHi14read_sim(char *str);
|
||||||
|
static void CmdHi14readt(char *str);
|
||||||
|
static void CmdHisimlisten(char *str);
|
||||||
|
static void CmdHi14sim(char *str);
|
||||||
|
static void CmdHi14asim(char *str);
|
||||||
|
static void CmdHi14snoop(char *str);
|
||||||
|
static void CmdHi14asnoop(char *str);
|
||||||
|
static void CmdFPGAOff(char *str);
|
||||||
|
int CmdClearGraph(int redraw);
|
||||||
|
static void CmdAppendGraph(int redraw, int clock, int bit);
|
||||||
|
static void CmdEM410xsim(char *str);
|
||||||
|
static void CmdLosim(char *str);
|
||||||
|
static void CmdLoread(char *str);
|
||||||
|
static void CmdLosamples(char *str);
|
||||||
|
static void CmdBitsamples(char *str);
|
||||||
|
static void CmdHisamples(char *str);
|
||||||
|
static int CmdHisamplest(char *str, int nrlow);
|
||||||
|
static void CmdHexsamples(char *str);
|
||||||
|
static void CmdHisampless(char *str);
|
||||||
|
static WORD Iso15693Crc(BYTE *v, int n);
|
||||||
|
static void CmdHi14bdemod(char *str);
|
||||||
|
static void CmdHi14list(char *str);
|
||||||
|
static void CmdHi14alist(char *str);
|
||||||
|
static void CmdHi15demod(char *str);
|
||||||
|
static void CmdTiread(char *str);
|
||||||
|
static void CmdTibits(char *str);
|
||||||
|
static void CmdTidemod(char *cmdline);
|
||||||
|
static void CmdNorm(char *str);
|
||||||
|
static void CmdDec(char *str);
|
||||||
|
static void CmdHpf(char *str);
|
||||||
|
static void CmdZerocrossings(char *str);
|
||||||
|
static void CmdLtrim(char *str);
|
||||||
|
static void CmdAutoCorr(char *str);
|
||||||
|
static void CmdVchdemod(char *str);
|
||||||
|
static void CmdIndalademod(char *str);
|
||||||
|
static void CmdFlexdemod(char *str);
|
||||||
|
static void Cmdaskdemod(char *str);
|
||||||
|
static void Cmddetectclockrate(char *str);
|
||||||
|
int detectclock(int peak);
|
||||||
|
static void Cmdbitstream(char *str);
|
||||||
|
static void Cmdmanchesterdemod(char *str);
|
||||||
|
static void CmdHiddemod(char *str);
|
||||||
|
static void CmdPlot(char *str);
|
||||||
|
static void CmdHide(char *str);
|
||||||
|
static void CmdScale(char *str);
|
||||||
|
static void CmdSave(char *str);
|
||||||
|
static void CmdLoad(char *str);
|
||||||
|
static void CmdHIDsimTAG(char *str);
|
||||||
|
static void CmdLcdReset(char *str);
|
||||||
|
static void CmdLcd(char *str);
|
||||||
|
static void CmdTest(char *str);
|
||||||
|
static void CmdSetDivisor(char *str);
|
||||||
|
static void CmdSweepLF(char *str);
|
||||||
void CommandReceived(char *cmd);
|
void CommandReceived(char *cmd);
|
||||||
void UsbCommandReceived(UsbCommand *c);
|
void UsbCommandReceived(UsbCommand *c);
|
||||||
|
|
||||||
|
|
||||||
// cmdline.cpp
|
// cmdline.cpp
|
||||||
void ShowCommandline(void);
|
void ShowCommandline(void);
|
||||||
void ExecCmd(char *cmd);
|
void ExecCmd(char *cmd);
|
||||||
|
|
Loading…
Reference in a new issue