\r
// variables\r
byte_t isOK = 0;\r
- byte_t dataoutbuf[16];\r
- uint8_t uid[10];\r
- uint32_t cuid;\r
+ byte_t dataoutbuf[16] = {0x00};\r
+ uint8_t uid[10] = {0x00};\r
+ uint32_t cuid = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
// variables\r
byte_t isOK = 0;\r
byte_t dataoutbuf[16 * 16];\r
- uint8_t uid[10];\r
- uint32_t cuid;\r
+ uint8_t uid[10] = {0x00};\r
+ uint32_t cuid = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
uint8_t blockNo = arg0;\r
uint8_t keyType = arg1;\r
uint64_t ui64Key = 0;\r
- byte_t blockdata[16];\r
+ byte_t blockdata[16] = {0x00};\r
\r
ui64Key = bytes_to_num(datain, 6);\r
memcpy(blockdata, datain + 10, 16);\r
\r
// variables\r
byte_t isOK = 0;\r
- uint8_t uid[10];\r
- uint32_t cuid;\r
+ uint8_t uid[10] = {0x00};\r
+ uint32_t cuid = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags, uint8_t *datain)\r
{\r
uint64_t ui64Key = 0;\r
- uint8_t uid[10];\r
+ uint8_t uid[10] = {0x00};\r
uint32_t cuid = 0;\r
uint8_t cascade_levels = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
- uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
+ uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00};\r
int16_t isOK = 0;\r
- uint8_t par_enc[1];\r
+ uint8_t par_enc[1] = {0x00};\r
uint8_t nt_par_enc = 0;\r
- uint8_t buf[USB_CMD_DATA_SIZE];\r
- uint32_t timeout;\r
+ uint8_t buf[USB_CMD_DATA_SIZE] = {0x00};\r
+ uint32_t timeout = 0;\r
\r
uint8_t blockNo = arg0 & 0xff;\r
uint8_t keyType = (arg0 >> 8) & 0xff;\r
\r
// variables\r
uint16_t rtr, i, j, len;\r
- uint16_t davg;\r
+ uint16_t davg = 0;\r
static uint16_t dmin, dmax;\r
- uint8_t uid[10];\r
+ uint8_t uid[10] = {0x00};\r
uint32_t cuid, nt1, nt2, nttmp, nttest, ks1;\r
- uint8_t par[1];\r
- uint32_t target_nt[2], target_ks[2];\r
+ uint8_t par[1] = {0x00};\r
+ uint32_t target_nt[2] = {0x00}, target_ks[2] = {0x00};\r
\r
- uint8_t par_array[4];\r
+ uint8_t par_array[4] = {0x00};\r
uint16_t ncount = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
// variables\r
int i;\r
byte_t isOK = 0;\r
- uint8_t uid[10];\r
- uint32_t cuid;\r
+ uint8_t uid[10] = {0x00};\r
+ uint32_t cuid = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
\r
void MifareEMemGet(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datain){\r
FpgaDownloadAndGo(FPGA_BITSTREAM_HF);\r
- byte_t buf[USB_CMD_DATA_SIZE];\r
+ byte_t buf[USB_CMD_DATA_SIZE] = {0x00};\r
emlGetMem(buf, arg0, arg1); // data, block num, blocks count (max 4)\r
\r
LED_B_ON();\r
uint8_t numSectors = arg0;\r
uint8_t keyType = arg1;\r
uint64_t ui64Key = 0;\r
- uint32_t cuid;\r
+ uint32_t cuid = 0;\r
struct Crypto1State mpcs = {0, 0};\r
struct Crypto1State *pcs;\r
pcs = &mpcs;\r
\r
// variables\r
- byte_t dataoutbuf[16];\r
- byte_t dataoutbuf2[16];\r
- uint8_t uid[10];\r
+ byte_t dataoutbuf[16] = {0x00};\r
+ byte_t dataoutbuf2[16] = {0x00};\r
+ uint8_t uid[10] = {0x00};\r
\r
LED_A_ON();\r
LED_B_OFF();\r
isOK = false;\r
if (MF_DBGLEVEL >= 1) Dbprintf("Error reading sector %2d block %2d", sectorNo, blockNo);\r
break;\r
- };\r
+ }\r
if (isOK) {\r
if (blockNo < NumBlocksPerSector(sectorNo) - 1) {\r
emlSetMem(dataoutbuf, FirstBlockOfSector(sectorNo) + blockNo, 1);\r
\r
}\r
\r
- if(mifare_classic_halt(pcs, cuid)) {\r
- if (MF_DBGLEVEL >= 1) Dbprintf("Halt error");\r
- };\r
+ if(mifare_classic_halt(pcs, cuid))\r
+ if (MF_DBGLEVEL >= 1)\r
+ Dbprintf("Halt error");\r
\r
// ----------------------------- crypto1 destroy\r
crypto1_destroy(pcs);\r
// variables\r
uint8_t uid[10] = {0x00};\r
uint8_t data[18] = {0x00};\r
- uint32_t cuid;\r
+ uint32_t cuid = 0;\r
\r
uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];\r
\r
// variables\r
bool isOK = true; \r
- uint8_t receivedAnswer[1];\r
- uint8_t receivedAnswerPar[1];\r
+ uint8_t receivedAnswer[1] = {0x00};\r
+ uint8_t receivedAnswerPar[1] = {0x00};\r
\r
ReaderTransmitBitsPar(wupC1,7,0, NULL);\r
if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
\r
byte_t dataout[12] = {0x00};\r
uint8_t uid[10] = {0x00};\r
- uint32_t cuid = 0x00;\r
+ uint32_t cuid = 0;\r
\r
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
clear_trace();\r
for (i = 0; i < len; i++)\r
data[i] = crypto1_byte(pcs, 0x00, 0) ^ data[i];\r
} else {\r
- bt = 0;\r
- for (i = 0; i < 4; i++)\r
- bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data[0], i)) << i;\r
- \r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data[0], 0)) << 0;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data[0], 1)) << 1;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data[0], 2)) << 2;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data[0], 3)) << 3;\r
data[0] = bt;\r
}\r
return;\r
for (i = 0; i < len; i++) {\r
bt = data[i];\r
data[i] = crypto1_byte(pcs, 0x00, 0) ^ data[i];\r
- if((i&0x0007) == 0) \r
+ if ((i&0x0007) == 0) \r
par[i>>3] = 0;\r
par[i>>3] |= (((filter(pcs->odd) ^ oddparity8(bt)) & 0x01)<<(7-(i&0x0007)));\r
} \r
- return;\r
}\r
\r
uint8_t mf_crypto1_encrypt4bit(struct Crypto1State *pcs, uint8_t data) {\r
uint8_t bt = 0;\r
- int i;\r
-\r
- for (i = 0; i < 4; i++)\r
- bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data, i)) << i;\r
- \r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data, 0)) << 0;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data, 1)) << 1;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data, 2)) << 2;\r
+ bt |= (crypto1_bit(pcs, 0, 0) ^ BIT(data, 3)) << 3;\r
return bt;\r
}\r
\r
if(!len) {\r
if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("%02X Cmd failed. Card timeout.", cmd);\r
len = ReaderReceive(answer,answer_parity);\r
- //return 0;\r
}\r
return len;\r
}\r
// send 2 byte commands\r
int mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t cmd, uint8_t data, uint8_t *answer, uint8_t *answer_parity, uint32_t *timing)\r
{\r
- uint8_t dcmd[4], ecmd[4];\r
+ uint8_t dcmd[4] = {0x00};\r
+ uint8_t ecmd[4] = {0x00};\r
uint16_t pos, res;\r
- uint8_t par[1]; // 1 Byte parity is enough here\r
+ uint8_t par[1] = {0x00}; // 1 Byte parity is enough here\r
dcmd[0] = cmd;\r
dcmd[1] = data;\r
AppendCrc14443a(dcmd, 2);\r
\r
if (crypted) {\r
par[0] = 0;\r
- for (pos = 0; pos < 4; pos++)\r
- {\r
+ for (pos = 0; pos < 4; pos++) {\r
ecmd[pos] = crypto1_byte(pcs, 0x00, 0) ^ dcmd[pos];\r
par[0] |= (((filter(pcs->odd) ^ oddparity8(dcmd[pos])) & 0x01) << (7-pos));\r
} \r
if (crypted == CRYPT_ALL) {\r
if (len == 1) {\r
res = 0;\r
- for (pos = 0; pos < 4; pos++)\r
- res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], pos)) << pos;\r
- \r
+ res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 0)) << 0;\r
+ res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 1)) << 1;\r
+ res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 2)) << 2;\r
+ res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 3)) << 3;\r
answer[0] = res;\r
\r
} else {\r
for (pos = 0; pos < len; pos++)\r
- {\r
answer[pos] = crypto1_byte(pcs, 0x00, 0) ^ answer[pos];\r
- }\r
}\r
}\r
\r
// variables\r
int len; \r
uint32_t pos;\r
- uint8_t tmp4[4];\r
+ uint8_t tmp4[4] = {0x00};\r
uint8_t par[1] = {0x00};\r
\r
// "random" reader nonce:\r
{\r
// variables\r
int len; \r
- uint8_t bt[2];\r
+ uint8_t bt[2] = {0x00};\r
\r
- uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00};\r
\r
// command MIFARE_CLASSIC_READBLOCK\r
len = mifare_sendcmd_short(pcs, 1, 0x30, blockNo, receivedAnswer, receivedAnswerPar, NULL);\r
int mifare_ul_ev1_auth(uint8_t *keybytes, uint8_t *pack){\r
\r
uint16_t len;\r
- uint8_t resp[4];\r
- uint8_t respPar[1];\r
+ uint8_t resp[4] = {0x00};\r
+ uint8_t respPar[1] = {0x00};\r
uint8_t key[4] = {0x00};\r
memcpy(key, keybytes, 4);\r
\r
if (MF_DBGLEVEL >= MF_DBG_EXTENDED)\r
Dbprintf("EV1 Auth : %02x%02x%02x%02x", key[0], key[1], key[2], key[3]);\r
+ \r
len = mifare_sendcmd(0x1B, key, sizeof(key), resp, respPar, NULL);\r
\r
if (len != 4) {\r
{\r
uint16_t len;\r
uint8_t bt[2];\r
- uint8_t receivedAnswer[MAX_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_PARITY_SIZE] = {0x00};\r
\r
-\r
len = mifare_sendcmd_short(NULL, 1, 0x30, blockNo, receivedAnswer, receivedAnswerPar, NULL);\r
if (len == 1) {\r
if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("Cmd Error: %02x", receivedAnswer[0]);\r
byte_t res = 0;\r
\r
uint8_t d_block[18], d_block_enc[18];\r
- uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00};\r
\r
// command MIFARE_CLASSIC_WRITEBLOCK\r
len = mifare_sendcmd_short(pcs, 1, 0xA0, blockNo, receivedAnswer, receivedAnswerPar, NULL);\r
{\r
uint16_t len;\r
uint8_t d_block[5] = {0x00};\r
- uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00};\r
\r
// command MIFARE_CLASSIC_WRITEBLOCK\r
d_block[0]= blockNo;\r
}\r
int mifare_classic_halt_ex(struct Crypto1State *pcs) {\r
uint16_t len; \r
- uint8_t receivedAnswer[4];\r
- uint8_t receivedAnswerPar[4];\r
+ uint8_t receivedAnswer[4] = {0x00};\r
+ uint8_t receivedAnswerPar[4] = {0x00};\r
\r
len = mifare_sendcmd_short(pcs, pcs == NULL ? false:true, 0x50, 0x00, receivedAnswer, receivedAnswerPar, NULL);\r
if (len != 0) {\r
int mifare_ultra_halt()\r
{\r
uint16_t len;\r
- uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE] = {0x00};\r
\r
len = mifare_sendcmd_short(NULL, true, 0x50, 0x00, receivedAnswer, receivedAnswerPar, NULL);\r
if (len != 0) {\r
{\r
if (sectorNo < 32) \r
return 4;\r
- else\r
- return 16;\r
+ return 16;\r
}\r
\r
uint8_t FirstBlockOfSector(uint8_t sectorNo) \r
uint8_t* emCARD = BigBuf_get_EM_addr();\r
uint8_t* data = emCARD + blockNum * 16;\r
\r
- if (emlCheckValBl(blockNum)) {\r
+ if (emlCheckValBl(blockNum))\r
return 1;\r
- }\r
\r
memcpy(blReg, data, 4);\r
*blBlock = data[12];\r
}\r
\r
uint64_t emlGetKey(int sectorNum, int keyType) {\r
- uint8_t key[6];\r
+ uint8_t key[6] = {0x00};\r
uint8_t* emCARD = BigBuf_get_EM_addr();\r
\r
memcpy(key, emCARD + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6);\r
int len;\r
// load key, keynumber\r
uint8_t data[2]={0x0a, 0x00};\r
- uint8_t receivedAnswer[MAX_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_PARITY_SIZE] = {0x00};\r
\r
len = mifare_sendcmd_special(NULL, 1, 0x02, data, receivedAnswer,receivedAnswerPar,NULL);\r
if (len == 1) {\r
data[0] = 0xAF;\r
memcpy(data+1,key,16);\r
\r
- uint8_t receivedAnswer[MAX_FRAME_SIZE];\r
- uint8_t receivedAnswerPar[MAX_PARITY_SIZE];\r
+ uint8_t receivedAnswer[MAX_FRAME_SIZE] = {0x00};\r
+ uint8_t receivedAnswerPar[MAX_PARITY_SIZE] = {0x00};\r
\r
len = mifare_sendcmd_special2(NULL, 1, 0x03, data, receivedAnswer, receivedAnswerPar ,NULL);\r
\r
char cmdp = param_getchar(Cmd, 0);
if ( cmdp == 'H' || cmdp == 'h' || cmdp == 0x00) {
- PrintAndLog("It loads datasamples from the file `filename`");
+ PrintAndLog("It loads datasamples from the file `filename` to device memory");
PrintAndLog("Usage: hf legic load <file name>");
PrintAndLog(" sample: hf legic load filename");
return 0;
int res = sscanf(line, "%x %x %x %x %x %x %x %x",
&data[0], &data[1], &data[2], &data[3],
&data[4], &data[5], &data[6], &data[7]);
+
if(res != 8) {
PrintAndLog("Error: could not read samples");
fclose(f);
return -1;
}
- UsbCommand c = { CMD_DOWNLOADED_SIM_SAMPLES_125K, {offset, 0, 0}};
-
- for( j = 0; j < 8; j++) {
- c.d.asBytes[j] = data[j];
- }
+ UsbCommand c = { CMD_DOWNLOADED_SIM_SAMPLES_125K, {offset, 0, 0}};
+ memcpy(c.d.asBytes, data, 8);
+ clearCommandBuffer();
SendCommand(&c);
WaitForResponse(CMD_ACK, NULL);
offset += 8;
/* If no length given save entire legic read buffer */
/* round up to nearest 8 bytes so the saved data can be used with legicload */
- if (requested == 0) {
+ if (requested == 0)
requested = 1024;
- }
if (requested % 8 != 0) {
int remainder = requested % 8;
void SendCommand(UsbCommand *c) {
#if 0
- printf("Sending %d bytes\n", sizeof(UsbCommand));
+ printf("Sending %d bytes\n", sizeof(UsbCommand));
#endif
if (offline) {
- PrintAndLog("Sending bytes to proxmark failed - offline");
- return;
- }
- /**
+ PrintAndLog("Sending bytes to proxmark failed - offline");
+ return;
+ }
+ /**
The while-loop below causes hangups at times, when the pm3 unit is unresponsive
or disconnected. The main console thread is alive, but comm thread just spins here.
Not good.../holiman
**/
- while(txcmd_pending);
- txcmd = *c;
- txcmd_pending = true;
+ while(txcmd_pending);
+
+ txcmd = *c;
+ txcmd_pending = true;
}
struct receiver_arg {
byte_t* prx = rx;
static void *uart_receiver(void *targ) {
- struct receiver_arg *arg = (struct receiver_arg*)targ;
- size_t rxlen;
- size_t cmd_count;
+ struct receiver_arg *arg = (struct receiver_arg*)targ;
+ size_t rxlen;
+ size_t cmd_count;
+
+ while (arg->run) {
+
+ rxlen = sizeof(UsbCommand);
- while (arg->run) {
- rxlen = sizeof(UsbCommand);
if (uart_receive(sp, prx, &rxlen)) {
- prx += rxlen;
- if (((prx-rx) % sizeof(UsbCommand)) != 0) {
- continue;
- }
- cmd_count = (prx-rx) / sizeof(UsbCommand);
-
- for (size_t i = 0; i < cmd_count; i++) {
- UsbCommandReceived((UsbCommand*)(rx+(i*sizeof(UsbCommand))));
- }
- }
- prx = rx;
-
- if(txcmd_pending) {
- if (!uart_send(sp, (byte_t*) &txcmd, sizeof(UsbCommand))) {
- PrintAndLog("Sending bytes to proxmark failed");
- }
- txcmd_pending = false;
- }
- }
-
- pthread_exit(NULL);
- return NULL;
+ prx += rxlen;
+ if (((prx-rx) % sizeof(UsbCommand)) != 0)
+ continue;
+
+ cmd_count = (prx-rx) / sizeof(UsbCommand);
+
+ for (size_t i = 0; i < cmd_count; i++)
+ UsbCommandReceived((UsbCommand*)( rx + ( i * sizeof(UsbCommand))));
+
+ }
+ prx = rx;
+
+ if (txcmd_pending) {
+ if ( !uart_send(sp, (byte_t*) &txcmd, sizeof(UsbCommand))) {
+ PrintAndLog("Sending bytes to proxmark failed");
+ }
+ txcmd_pending = false;
+ }
+ }
+
+ pthread_exit(NULL);
+ return NULL;
}
static void *main_loop(void *targ) {
- struct main_loop_arg *arg = (struct main_loop_arg*)targ;
- struct receiver_arg rarg;
- char *cmd = NULL;
- pthread_t reader_thread;
+ struct main_loop_arg *arg = (struct main_loop_arg*)targ;
+ struct receiver_arg rarg;
+ char *cmd = NULL;
+ pthread_t reader_thread;
- if (arg->usb_present == 1) {
+ if (arg->usb_present == 1) {
rarg.run = 1;
- pthread_create(&reader_thread, NULL, &uart_receiver, &rarg);
+ pthread_create(&reader_thread, NULL, &uart_receiver, &rarg);
// cache Version information now:
CmdVersion(NULL);
- }
+ }
- FILE *script_file = NULL;
- char script_cmd_buf[256]; // iceman, needs lua script the same file_path_buffer as the rest
+ FILE *script_file = NULL;
+ char script_cmd_buf[256] = {0x00}; // iceman, needs lua script the same file_path_buffer as the rest
if (arg->script_cmds_file) {
- script_file = fopen(arg->script_cmds_file, "r");
- if (script_file) {
- printf("using 'scripting' commands file %s\n", arg->script_cmds_file);
- }
- }
+ script_file = fopen(arg->script_cmds_file, "r");
+
+ if (script_file)
+ printf("using 'scripting' commands file %s\n", arg->script_cmds_file);
+ }
read_history(".history");
while(1) {
- // If there is a script file
- if (script_file)
- {
+ // If there is a script file
+ if (script_file)
+ {
if (!fgets(script_cmd_buf, sizeof(script_cmd_buf), script_file)) {
- fclose(script_file);
- script_file = NULL;
+ fclose(script_file);
+ script_file = NULL;
} else {
- char *nl;
- nl = strrchr(script_cmd_buf, '\r');
- if (nl) *nl = '\0';
+ char *nl;
+ nl = strrchr(script_cmd_buf, '\r');
+ if (nl)
+ *nl = '\0';
- nl = strrchr(script_cmd_buf, '\n');
- if (nl) *nl = '\0';
+ nl = strrchr(script_cmd_buf, '\n');
+
+ if (nl)
+ *nl = '\0';
if ((cmd = (char*) malloc(strlen(script_cmd_buf) + 1)) != NULL) {
- memset(cmd, 0, strlen(script_cmd_buf));
- strcpy(cmd, script_cmd_buf);
- printf("%s\n", cmd);
- }
- }
- }
-
- if (!script_file) {
- cmd = readline(PROXPROMPT);
+ memset(cmd, 0, strlen(script_cmd_buf));
+ strcpy(cmd, script_cmd_buf);
+ printf("%s\n", cmd);
+ }
+ }
+ } else {
+ cmd = readline(PROXPROMPT);
}
if (cmd) {
while(cmd[strlen(cmd) - 1] == ' ')
- cmd[strlen(cmd) - 1] = 0x00;
-
+ cmd[strlen(cmd) - 1] = 0x00;
+
if (cmd[0] != 0x00) {
int ret = CommandReceived(cmd);
add_history(cmd);
- if (ret == 99) { // exit or quit
+
+ // exit or quit
+ if (ret == 99)
break;
- }
}
free(cmd);
} else {
write_history(".history");
- if (arg->usb_present == 1) {
- rarg.run = 0;
- pthread_join(reader_thread, NULL);
- }
+ if (arg->usb_present == 1) {
+ rarg.run = 0;
+ pthread_join(reader_thread, NULL);
+ }
if (script_file) {
- fclose(script_file);
- script_file = NULL;
- }
+ fclose(script_file);
+ script_file = NULL;
+ }
- ExitGraphics();
- pthread_exit(NULL);
- return NULL;
+ ExitGraphics();
+ pthread_exit(NULL);
+ return NULL;
}
static void dumpAllHelp(int markdown)
{
- printf("\n%sProxmark3 command dump%s\n\n",markdown?"# ":"",markdown?"":"\n======================");
- printf("Some commands are available only if a Proxmark is actually connected.%s\n",markdown?" ":"");
- printf("Check column \"offline\" for their availability.\n");
- printf("\n");
- command_t *cmds = getTopLevelCommandTable();
- dumpCommandsRecursive(cmds, markdown);
+ printf("\n%sProxmark3 command dump%s\n\n",markdown?"# ":"",markdown?"":"\n======================");
+ printf("Some commands are available only if a Proxmark is actually connected.%s\n",markdown?" ":"");
+ printf("Check column \"offline\" for their availability.\n");
+ printf("\n");
+ command_t *cmds = getTopLevelCommandTable();
+ dumpCommandsRecursive(cmds, markdown);
}
int main(int argc, char* argv[]) {
.usb_present = 0,
.script_cmds_file = NULL
};
+
pthread_t main_loop_threat;
printf("Output will be flushed after every print.\n");
flushAfterWrite = 1;
}
- else
- marg.script_cmds_file = argv[2];
+ else {
+ marg.script_cmds_file = argv[2];
+ }
}
// create a mutex to avoid interlacing print commands from our different threads
pthread_join(main_loop_threat, NULL);
// Clean up the port
- if (offline == 0) {
- uart_close(sp);
- }
+ if (offline == 0)
+ uart_close(sp);
// clean up mutex
pthread_mutex_destroy(&print_lock);