Merge branch 'master' into 213TT

This commit is contained in:
Matthew Jackson 2023-02-22 07:34:05 -06:00
commit 23e0268a1a
8 changed files with 21 additions and 12 deletions

View file

@ -755,7 +755,7 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect,
memcpy(ovect, data, block_size); memcpy(ovect, data, block_size);
} }
uint8_t edata[DESFIRE_MAX_CRYPTO_BLOCK_SIZE]; uint8_t edata[DESFIRE_MAX_CRYPTO_BLOCK_SIZE] = {0};
switch (key->type) { switch (key->type) {
case T_DES: case T_DES:

View file

@ -139,6 +139,7 @@ void MifareDesfireGetInformation(void) {
uint8_t details[14]; uint8_t details[14];
} PACKED payload; } PACKED payload;
memset(&payload, 0x00, sizeof(payload));
/* /*
1 = PCB 1 1 = PCB 1
2 = cid 2 2 = cid 2

View file

@ -643,6 +643,7 @@ static int CmdFlashMemInfo(const char *Cmd) {
if (got_private == false) { if (got_private == false) {
mbedtls_rsa_free(rsa); mbedtls_rsa_free(rsa);
free(rsa);
} }
mbedtls_pk_free(&pkctx); mbedtls_pk_free(&pkctx);

View file

@ -898,7 +898,7 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
snprintf(exp, size, "R-block NACK(%d)", (cmd[0] & 0x01)); snprintf(exp, size, "R-block NACK(%d)", (cmd[0] & 0x01));
} }
// I-block 000xCN1x // I-block 000xCN1x
else if ((cmd[0] & 0xC0) == 0x00) { else if (((cmd[0] & 0xC0) == 0x00) && (cmdsize > 2)) {
// PCB [CID] [NAD] [INF] CRC CRC // PCB [CID] [NAD] [INF] CRC CRC
int pos = 1; int pos = 1;

View file

@ -80,12 +80,14 @@ static int sendTry(uint8_t format_idx, wiegand_card_t *card, uint32_t delay, boo
); );
} }
lf_hidsim_t payload; lf_hidsim_t payload = {
payload.Q5 = false; .EM = false,
payload.hi2 = packed.Top; .Q5 = false,
payload.hi = packed.Mid; .hi2 = packed.Top,
payload.lo = packed.Bot; .hi = packed.Mid,
payload.longFMT = (packed.Mid > 0xFFF); .lo = packed.Bot,
.longFMT = (packed.Mid > 0xFFF)
};
clearCommandBuffer(); clearCommandBuffer();

View file

@ -111,7 +111,8 @@ int main(int argc, char *argv[]) {
uint8_t tag_challenge[16] = {0x00}; uint8_t tag_challenge[16] = {0x00};
uint8_t lock_challenge[32] = {0x00}; uint8_t lock_challenge[32] = {0x00};
uint64_t timestamp = atoi(argv[1]); uint64_t timestamp = 0;
sscanf(argv[1], "%"PRIu64, &timestamp);
if (argc != 4) { if (argc != 4) {
printf("\nusage: %s <unix timestamp> <16 byte tag challenge> <32 byte lock challenge>\n\n", argv[0]); printf("\nusage: %s <unix timestamp> <16 byte tag challenge> <32 byte lock challenge>\n\n", argv[0]);
@ -124,8 +125,10 @@ int main(int argc, char *argv[]) {
if (hexstr_to_byte_array(argv[3], lock_challenge, sizeof(lock_challenge))) if (hexstr_to_byte_array(argv[3], lock_challenge, sizeof(lock_challenge)))
return 3; return 3;
// current time
uint64_t start_time = time(NULL); uint64_t start_time = time(NULL);
// from a time before up until current time.
for (; timestamp < start_time; timestamp++) { for (; timestamp < start_time; timestamp++) {
make_key(timestamp, key); make_key(timestamp, key);

View file

@ -233,7 +233,8 @@ int main(int argc, char *argv[]) {
if (argc != 4) return usage(argv[0]); if (argc != 4) return usage(argv[0]);
uint64_t start_time = atoi(argv[1]); uint64_t start_time = 0;
sscanf(argv[1], "%"PRIu64, &start_time);
uint8_t tag_challenge[16] = {0x00}; uint8_t tag_challenge[16] = {0x00};
if (hexstr_to_byte_array(argv[2], tag_challenge, sizeof(tag_challenge))) if (hexstr_to_byte_array(argv[2], tag_challenge, sizeof(tag_challenge)))

View file

@ -172,7 +172,7 @@ static void print_time(uint64_t at) {
char res[32]; char res[32];
strftime(res, sizeof(res), "%Y-%m-%d %H:%M:%S", &lt); strftime(res, sizeof(res), "%Y-%m-%d %H:%M:%S", &lt);
printf("%u ( '%s' )\n", (unsigned)t, res); printf("%"PRIu64" ( '%s' )\n", t, res);
} }
static void *brute_thread(void *arguments) { static void *brute_thread(void *arguments) {
@ -378,7 +378,8 @@ int main(int argc, char *argv[]) {
return 1; return 1;
} }
uint64_t start_time = atoi(argv[3]); uint64_t start_time = 0;
sscanf(argv[3], "%"PRIu64, &start_time);
printf("Crypto algo............ " _GREEN_("%s") "\n", algostr); printf("Crypto algo............ " _GREEN_("%s") "\n", algostr);
printf("LCR Random generator... " _GREEN_("%s") "\n", generators[g_idx].Name); printf("LCR Random generator... " _GREEN_("%s") "\n", generators[g_idx].Name);