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:
skamkar 2009-07-02 03:13:13 +00:00
parent e6b13a5718
commit 9760414b96
4 changed files with 741 additions and 231 deletions

File diff suppressed because it is too large Load diff

View file

@ -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);

View file

@ -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");

View file

@ -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);