diff --git a/client/cmdlf.c b/client/cmdlf.c index 34fe95dda..d83a40283 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -625,7 +625,6 @@ int CmdLFfskSim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + size); - free(payload); setClockGrid(clk, 0); @@ -717,7 +716,6 @@ int CmdLFaskSim(const char *Cmd) { size = PM3_CMD_DATA_SIZE - sizeof(lf_asksim_t); } - lf_asksim_t *payload = calloc(1, sizeof(lf_asksim_t) + size); payload->encoding = encoding; payload->invert = invert; @@ -838,10 +836,13 @@ int CmdLFpskSim(const char *Cmd) { size = PM3_CMD_DATA_SIZE; } PrintAndLogEx(DEBUG, "DEBUG: Sending DemodBuffer Length: %d", size); + clearCommandBuffer(); SendCommandOLD(CMD_PSK_SIM_TAG, clk << 8 | carrier, invert, size, DemodBuffer, size); PacketResponseNG resp; WaitForResponse(CMD_PSK_SIM_TAG, &resp); + + PrintAndLogEx(INFO, "Done"); if (resp.status != PM3_EOPABORTED) return resp.status; return PM3_SUCCESS; diff --git a/client/cmdlfawid.c b/client/cmdlfawid.c index d283181b6..e9169d864 100644 --- a/client/cmdlfawid.c +++ b/client/cmdlfawid.c @@ -107,17 +107,16 @@ static int sendTry(uint8_t fmtlen, uint32_t fc, uint32_t cn, uint32_t delay, uin return PM3_ESOFT; } - uint8_t clk = 50, high = 10, low = 8, invert = 1; - lf_fsksim_t *payload = calloc(1, sizeof(lf_fsksim_t) + bs_len); - payload->fchigh = high; - payload->fclow = low; - payload->separator = invert; - payload->clock = clk; + payload->fchigh = 10; + payload->fclow = 8; + payload->separator = 1; + payload->clock = 50; memcpy(payload->data, bits, bs_len); clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + bs_len); + free(payload); msleep(delay); return sendPing(); @@ -186,7 +185,7 @@ static int CmdAWIDDemod(const char *Cmd) { size_t size = getFromGraphBuf(bits); if (size == 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - AWID not enough samples"); - return PM3_ESOFT; + return PM3_ENODATA; } //get binary from fsk wave int waveIdx = 0; @@ -323,8 +322,8 @@ static int CmdAWIDSim(const char *Cmd) { uint8_t bs[96]; memset(bs, 0x00, sizeof(bs)); - char cmdp = param_getchar(Cmd, 0); - if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_awid_sim(); + char cmdp = tolower(param_getchar(Cmd, 0)); + if (strlen(Cmd) == 0 || cmdp == 'h') return usage_lf_awid_sim(); fmtlen = param_get8(Cmd, 0); fc = param_get32ex(Cmd, 1, 0, 10); @@ -340,22 +339,20 @@ static int CmdAWIDSim(const char *Cmd) { PrintAndLogEx(WARNING, "Error with tag bitstream generation."); return PM3_ESOFT; } - - uint8_t clk = 50, high = 10, low = 8, invert = 1; - // AWID uses: FSK2a fcHigh: 10, fcLow: 8, clk: 50, invert: 1 // arg1 --- fcHigh<<8 + fcLow // arg2 --- Inversion and clk setting // 96 --- Bitstream length: 96-bits == 12 bytes lf_fsksim_t *payload = calloc(1, sizeof(lf_fsksim_t) + sizeof(bs)); - payload->fchigh = high; - payload->fclow = low; - payload->separator = invert; - payload->clock = clk; + payload->fchigh = 10; + payload->fclow = 8; + payload->separator = 1; + payload->clock = 50; memcpy(payload->data, bs, sizeof(bs)); clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + sizeof(bs)); + free(payload); PacketResponseNG resp; WaitForResponse(CMD_FSK_SIM_TAG, &resp); diff --git a/client/cmdlfio.c b/client/cmdlfio.c index 694cbc550..4fb1b6dda 100644 --- a/client/cmdlfio.c +++ b/client/cmdlfio.c @@ -195,9 +195,6 @@ static int CmdIOProxSim(const char *Cmd) { PrintAndLogEx(INFO, "Card Number Truncated to 16-bits (IOProx): %u", cn); } - // clock 64, FSK2a fcHIGH 10 | fcLOW 8 - uint8_t clk = 64, invert = 1, high = 10, low = 8; - PrintAndLogEx(SUCCESS, "Simulating IOProx version: %u FC: %u; CN: %u\n", version, fc, cn); PrintAndLogEx(SUCCESS, "Press pm3-button to abort simulation or run another command"); @@ -210,13 +207,15 @@ static int CmdIOProxSim(const char *Cmd) { // arg2 --- Invert and clk setting // size --- 64 bits == 8 bytes lf_fsksim_t *payload = calloc(1, sizeof(lf_fsksim_t) + sizeof(bs)); - payload->fchigh = high; - payload->fclow = low; - payload->separator = invert; - payload->clock = clk; + payload->fchigh = 10; + payload->fclow = 8; + payload->separator = 1; + payload->clock = 64; memcpy(payload->data, bs, sizeof(bs)); + clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + sizeof(bs)); + free(payload); PacketResponseNG resp; WaitForResponse(CMD_FSK_SIM_TAG, &resp); diff --git a/client/cmdlfparadox.c b/client/cmdlfparadox.c index e837d2fe5..684730ef3 100644 --- a/client/cmdlfparadox.c +++ b/client/cmdlfparadox.c @@ -140,8 +140,10 @@ static int CmdParadoxSim(const char *Cmd) { payload->separator = invert; payload->clock = clk; memcpy(payload->data, bs, sizeof(bs)); + clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + sizeof(bs)); + free(payload); PacketResponseNG resp; WaitForResponse(CMD_FSK_SIM_TAG, &resp); @@ -150,8 +152,6 @@ static int CmdParadoxSim(const char *Cmd) { if (resp.status != PM3_EOPABORTED) return resp.status; return PM3_SUCCESS; - -// PrintAndLogEx(NORMAL, "UNFINISHED"); } static command_t CommandTable[] = { diff --git a/client/cmdlfpyramid.c b/client/cmdlfpyramid.c index 5f3e2fb05..80ef7b94f 100644 --- a/client/cmdlfpyramid.c +++ b/client/cmdlfpyramid.c @@ -199,8 +199,8 @@ static int CmdPyramidRead(const char *Cmd) { static int CmdPyramidClone(const char *Cmd) { - char cmdp = param_getchar(Cmd, 0); - if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_pyramid_clone(); + char cmdp = tolower(param_getchar(Cmd, 0)); + if (strlen(Cmd) == 0 || cmdp == 'h') return usage_lf_pyramid_clone(); uint32_t facilitycode = 0, cardnumber = 0, fc = 0, cn = 0; uint32_t blocks[5]; @@ -259,17 +259,14 @@ static int CmdPyramidClone(const char *Cmd) { static int CmdPyramidSim(const char *Cmd) { - char cmdp = param_getchar(Cmd, 0); - if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_pyramid_sim(); + char cmdp = tolower(param_getchar(Cmd, 0)); + if (strlen(Cmd) == 0 || cmdp == 'h') return usage_lf_pyramid_sim(); uint32_t facilitycode = 0, cardnumber = 0, fc = 0, cn = 0; uint8_t bs[128]; memset(bs, 0x00, sizeof(bs)); - - // Pyramid uses: fcHigh: 10, fcLow: 8, clk: 50, invert: 0 - uint8_t clk = 50, invert = 0, high = 10, low = 8; - + if (sscanf(Cmd, "%u %u", &fc, &cn) != 2) return usage_lf_pyramid_sim(); facilitycode = (fc & 0x000000FF); @@ -282,15 +279,17 @@ static int CmdPyramidSim(const char *Cmd) { PrintAndLogEx(SUCCESS, "Simulating Farpointe/Pyramid - Facility Code: %u, CardNumber: %u", facilitycode, cardnumber); + // Pyramid uses: fcHigh: 10, fcLow: 8, clk: 50, invert: 0 lf_fsksim_t *payload = calloc(1, sizeof(lf_fsksim_t) + sizeof(bs)); - payload->fchigh = high; - payload->fclow = low; - payload->separator = invert; - payload->clock = clk; + payload->fchigh = 10; + payload->fclow = 8; + payload->separator = 0; + payload->clock = 50; memcpy(payload->data, bs, sizeof(bs)); clearCommandBuffer(); SendCommandNG(CMD_FSK_SIM_TAG, (uint8_t *)payload, sizeof(lf_fsksim_t) + sizeof(bs)); + free(payload); PacketResponseNG resp; WaitForResponse(CMD_FSK_SIM_TAG, &resp);