mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
fixed stupid 64-bit formatting for x86/amd64 and unix/windows
This commit is contained in:
parent
cb64309e4b
commit
125a98a110
12 changed files with 41 additions and 28 deletions
|
@ -391,7 +391,7 @@ int CmdHF14ASim(const char *Cmd)
|
||||||
|
|
||||||
// Are we handling the (optional) second part uid?
|
// Are we handling the (optional) second part uid?
|
||||||
if (long_uid > 0xffffffff) {
|
if (long_uid > 0xffffffff) {
|
||||||
PrintAndLog("Emulating ISO/IEC 14443 type A tag with 7 byte UID (%014llx)",long_uid);
|
PrintAndLog("Emulating ISO/IEC 14443 type A tag with 7 byte UID (%014"llx")",long_uid);
|
||||||
// Store the second part
|
// Store the second part
|
||||||
c.arg[2] = (long_uid & 0xffffffff);
|
c.arg[2] = (long_uid & 0xffffffff);
|
||||||
long_uid >>= 32;
|
long_uid >>= 32;
|
||||||
|
|
|
@ -332,7 +332,7 @@ int CmdLegicRfSim(const char *Cmd)
|
||||||
int CmdLegicRfWrite(const char *Cmd)
|
int CmdLegicRfWrite(const char *Cmd)
|
||||||
{
|
{
|
||||||
UsbCommand c={CMD_WRITER_LEGIC_RF};
|
UsbCommand c={CMD_WRITER_LEGIC_RF};
|
||||||
int res = sscanf(Cmd, " 0x%llx 0x%llx", &c.arg[0], &c.arg[1]);
|
int res = sscanf(Cmd, " 0x%"llx" 0x%"llx, &c.arg[0], &c.arg[1]);
|
||||||
if(res != 2) {
|
if(res != 2) {
|
||||||
PrintAndLog("Please specify the offset and length as two hex strings");
|
PrintAndLog("Please specify the offset and length as two hex strings");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -76,13 +76,13 @@ start:
|
||||||
PrintAndLog("Key not found (lfsr_common_prefix list is null). Nt=%08x", nt);
|
PrintAndLog("Key not found (lfsr_common_prefix list is null). Nt=%08x", nt);
|
||||||
} else {
|
} else {
|
||||||
printf("------------------------------------------------------------------\n");
|
printf("------------------------------------------------------------------\n");
|
||||||
PrintAndLog("Key found:%012llx \n", r_key);
|
PrintAndLog("Key found:%012"llx" \n", r_key);
|
||||||
|
|
||||||
num_to_bytes(r_key, 6, keyBlock);
|
num_to_bytes(r_key, 6, keyBlock);
|
||||||
isOK = mfCheckKeys(0, 0, 1, keyBlock, &r_key);
|
isOK = mfCheckKeys(0, 0, 1, keyBlock, &r_key);
|
||||||
}
|
}
|
||||||
if (!isOK)
|
if (!isOK)
|
||||||
PrintAndLog("Found valid key:%012llx", r_key);
|
PrintAndLog("Found valid key:%012"llx, r_key);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (isOK != 2) PrintAndLog("Found invalid key. ( Nt=%08x ,Trying use it to run again...", nt);
|
if (isOK != 2) PrintAndLog("Found invalid key. ( Nt=%08x ,Trying use it to run again...", nt);
|
||||||
|
@ -573,7 +573,7 @@ int CmdHF14AMfNested(const char *Cmd)
|
||||||
if (res)
|
if (res)
|
||||||
res = mfCheckKeys(trgBlockNo, trgKeyType, 8, &keyBlock[6 * 8], &key64);
|
res = mfCheckKeys(trgBlockNo, trgKeyType, 8, &keyBlock[6 * 8], &key64);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
PrintAndLog("Found valid key:%012llx", key64);
|
PrintAndLog("Found valid key:%012"llx, key64);
|
||||||
|
|
||||||
// transfer key to the emulator
|
// transfer key to the emulator
|
||||||
if (transferToEml) {
|
if (transferToEml) {
|
||||||
|
@ -633,7 +633,7 @@ int CmdHF14AMfNested(const char *Cmd)
|
||||||
if (res)
|
if (res)
|
||||||
res = mfCheckKeys(trgBlockNo, trgKeyType, 8, &keyBlock[6 * 8], &key64);
|
res = mfCheckKeys(trgBlockNo, trgKeyType, 8, &keyBlock[6 * 8], &key64);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
PrintAndLog("Found valid key:%012llx", key64);
|
PrintAndLog("Found valid key:%012"llx, key64);
|
||||||
e_sector[trgBlockNo / 4].foundKey[trgKeyType] = 1;
|
e_sector[trgBlockNo / 4].foundKey[trgKeyType] = 1;
|
||||||
e_sector[trgBlockNo / 4].Key[trgKeyType] = key64;
|
e_sector[trgBlockNo / 4].Key[trgKeyType] = key64;
|
||||||
}
|
}
|
||||||
|
@ -646,7 +646,7 @@ int CmdHF14AMfNested(const char *Cmd)
|
||||||
PrintAndLog("|sec|key A |res|key B |res|");
|
PrintAndLog("|sec|key A |res|key B |res|");
|
||||||
PrintAndLog("|---|----------------|---|----------------|---|");
|
PrintAndLog("|---|----------------|---|----------------|---|");
|
||||||
for (i = 0; i < SectorsCnt; i++) {
|
for (i = 0; i < SectorsCnt; i++) {
|
||||||
PrintAndLog("|%03d| %012llx | %d | %012llx | %d |", i,
|
PrintAndLog("|%03d| %012"llx" | %d | %012"llx" | %d |", i,
|
||||||
e_sector[i].Key[0], e_sector[i].foundKey[0], e_sector[i].Key[1], e_sector[i].foundKey[1]);
|
e_sector[i].Key[0], e_sector[i].foundKey[0], e_sector[i].Key[1], e_sector[i].foundKey[1]);
|
||||||
}
|
}
|
||||||
PrintAndLog("|---|----------------|---|----------------|---|");
|
PrintAndLog("|---|----------------|---|----------------|---|");
|
||||||
|
@ -843,7 +843,7 @@ int CmdHF14AMfChk(const char *Cmd)
|
||||||
}
|
}
|
||||||
memset(keyBlock + 6 * keycnt, 0, 6);
|
memset(keyBlock + 6 * keycnt, 0, 6);
|
||||||
num_to_bytes(strtoll(buf, NULL, 16), 6, keyBlock + 6*keycnt);
|
num_to_bytes(strtoll(buf, NULL, 16), 6, keyBlock + 6*keycnt);
|
||||||
PrintAndLog("chk custom key[%d] %012llx", keycnt, bytes_to_num(keyBlock + 6*keycnt, 6));
|
PrintAndLog("chk custom key[%d] %012"llx, keycnt, bytes_to_num(keyBlock + 6*keycnt, 6));
|
||||||
keycnt++;
|
keycnt++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -873,7 +873,7 @@ int CmdHF14AMfChk(const char *Cmd)
|
||||||
res = mfCheckKeys(b, t, size, keyBlock +6*c, &key64);
|
res = mfCheckKeys(b, t, size, keyBlock +6*c, &key64);
|
||||||
if (res !=1) {
|
if (res !=1) {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
PrintAndLog("Found valid key:[%012llx]",key64);
|
PrintAndLog("Found valid key:[%012"llx"]",key64);
|
||||||
if (transferToEml) {
|
if (transferToEml) {
|
||||||
uint8_t block[16];
|
uint8_t block[16];
|
||||||
mfEmlGetMem(block, get_trailer_block(b), 1);
|
mfEmlGetMem(block, get_trailer_block(b), 1);
|
||||||
|
@ -1205,7 +1205,7 @@ int CmdHF14AMfEKeyPrn(const char *Cmd)
|
||||||
}
|
}
|
||||||
keyA = bytes_to_num(data, 6);
|
keyA = bytes_to_num(data, 6);
|
||||||
keyB = bytes_to_num(data + 10, 6);
|
keyB = bytes_to_num(data + 10, 6);
|
||||||
PrintAndLog("|%03d| %012llx | %012llx |", i, keyA, keyB);
|
PrintAndLog("|%03d| %012"llx" | %012"llx" |", i, keyA, keyB);
|
||||||
}
|
}
|
||||||
PrintAndLog("|---|----------------|----------------|");
|
PrintAndLog("|---|----------------|----------------|");
|
||||||
|
|
||||||
|
|
|
@ -274,7 +274,7 @@ int CmdTIWrite(const char *Cmd)
|
||||||
UsbCommand c = {CMD_WRITE_TI_TYPE};
|
UsbCommand c = {CMD_WRITE_TI_TYPE};
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
|
||||||
res = sscanf(Cmd, "0x%llx 0x%llx 0x%llx ", &c.arg[0], &c.arg[1], &c.arg[2]);
|
res = sscanf(Cmd, "0x%"PRIu64"x 0x%"PRIu64"x 0x%"PRIu64"x ", &c.arg[0], &c.arg[1], &c.arg[2]);
|
||||||
if (res == 2) c.arg[2]=0;
|
if (res == 2) c.arg[2]=0;
|
||||||
if (res < 2)
|
if (res < 2)
|
||||||
PrintAndLog("Please specify the data as two hex strings, optionally the CRC as a third");
|
PrintAndLog("Please specify the data as two hex strings, optionally the CRC as a third");
|
||||||
|
|
|
@ -103,10 +103,10 @@ void UsbCommandReceived(UsbCommand *UC)
|
||||||
/*
|
/*
|
||||||
// Debug
|
// Debug
|
||||||
printf("UsbCommand length[len=%zd]\n",sizeof(UsbCommand));
|
printf("UsbCommand length[len=%zd]\n",sizeof(UsbCommand));
|
||||||
printf(" cmd[len=%zd]: %llx\n",sizeof(UC->cmd),UC->cmd);
|
printf(" cmd[len=%zd]: %"llx"\n",sizeof(UC->cmd),UC->cmd);
|
||||||
printf(" arg0[len=%zd]: %llx\n",sizeof(UC->arg[0]),UC->arg[0]);
|
printf(" arg0[len=%zd]: %"llx"\n",sizeof(UC->arg[0]),UC->arg[0]);
|
||||||
printf(" arg1[len=%zd]: %llx\n",sizeof(UC->arg[1]),UC->arg[1]);
|
printf(" arg1[len=%zd]: %"llx"\n",sizeof(UC->arg[1]),UC->arg[1]);
|
||||||
printf(" arg2[len=%zd]: %llx\n",sizeof(UC->arg[2]),UC->arg[2]);
|
printf(" arg2[len=%zd]: %"llx"\n",sizeof(UC->arg[2]),UC->arg[2]);
|
||||||
printf(" data[len=%zd]: %02x%02x%02x...\n",sizeof(UC->d.asBytes),UC->d.asBytes[0],UC->d.asBytes[1],UC->d.asBytes[2]);
|
printf(" data[len=%zd]: %02x%02x%02x...\n",sizeof(UC->d.asBytes),UC->d.asBytes[0],UC->d.asBytes[1],UC->d.asBytes[2]);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "proxmark3.h"
|
||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
//#include "proxusb.h"
|
//#include "proxusb.h"
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
|
@ -296,7 +297,7 @@ static int get_proxmark_state(uint32_t *state)
|
||||||
*state = resp.arg[0];
|
*state = resp.arg[0];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Error: Couldn't get proxmark state, bad response type: 0x%04llx\n", resp.cmd);
|
fprintf(stderr, "Error: Couldn't get proxmark state, bad response type: 0x%04"llx"\n", resp.cmd);
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -358,7 +359,7 @@ static int wait_for_ack(void)
|
||||||
UsbCommand ack;
|
UsbCommand ack;
|
||||||
ReceiveCommand(&ack);
|
ReceiveCommand(&ack);
|
||||||
if (ack.cmd != CMD_ACK) {
|
if (ack.cmd != CMD_ACK) {
|
||||||
printf("Error: Unexpected reply 0x%04llx (expected ACK)\n", ack.cmd);
|
printf("Error: Unexpected reply 0x%04"llx" (expected ACK)\n", ack.cmd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
//#include "proxusb.h"
|
#include "proxmark3.h"
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
#include "uart.h"
|
#include "uart.h"
|
||||||
#include "usb_cmd.h"
|
#include "usb_cmd.h"
|
||||||
|
@ -21,10 +21,10 @@ static char* serial_port_name;
|
||||||
void cmd_debug(UsbCommand* UC) {
|
void cmd_debug(UsbCommand* UC) {
|
||||||
// Debug
|
// Debug
|
||||||
printf("UsbCommand length[len=%zd]\n",sizeof(UsbCommand));
|
printf("UsbCommand length[len=%zd]\n",sizeof(UsbCommand));
|
||||||
printf(" cmd[len=%zd]: %016llx\n",sizeof(UC->cmd),UC->cmd);
|
printf(" cmd[len=%zd]: %016"llx"\n",sizeof(UC->cmd),UC->cmd);
|
||||||
printf(" arg0[len=%zd]: %016llx\n",sizeof(UC->arg[0]),UC->arg[0]);
|
printf(" arg0[len=%zd]: %016"llx"\n",sizeof(UC->arg[0]),UC->arg[0]);
|
||||||
printf(" arg1[len=%zd]: %016llx\n",sizeof(UC->arg[1]),UC->arg[1]);
|
printf(" arg1[len=%zd]: %016"llx"\n",sizeof(UC->arg[1]),UC->arg[1]);
|
||||||
printf(" arg2[len=%zd]: %016llx\n",sizeof(UC->arg[2]),UC->arg[2]);
|
printf(" arg2[len=%zd]: %016"llx"\n",sizeof(UC->arg[2]),UC->arg[2]);
|
||||||
printf(" data[len=%zd]: ",sizeof(UC->d.asBytes));
|
printf(" data[len=%zd]: ",sizeof(UC->d.asBytes));
|
||||||
for (size_t i=0; i<16; i++) {
|
for (size_t i=0; i<16; i++) {
|
||||||
printf("%02x",UC->d.asBytes[i]);
|
printf("%02x",UC->d.asBytes[i]);
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
// MIFARE Darkside hack
|
// MIFARE Darkside hack
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define __STDC_FORMAT_MACROS
|
||||||
|
#include <inttypes.h>
|
||||||
|
#define llx PRIx64
|
||||||
|
|
||||||
#include "nonce2key.h"
|
#include "nonce2key.h"
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
|
|
||||||
|
@ -23,7 +27,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint64_t par_info, uint64_t ks_info, ui
|
||||||
// Reset the last three significant bits of the reader nonce
|
// Reset the last three significant bits of the reader nonce
|
||||||
nr &= 0xffffff1f;
|
nr &= 0xffffff1f;
|
||||||
|
|
||||||
PrintAndLog("\nuid(%08x) nt(%08x) par(%016llx) ks(%016llx)\n\n",uid,nt,par_info,ks_info);
|
PrintAndLog("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx")\n\n",uid,nt,par_info,ks_info);
|
||||||
|
|
||||||
for (pos=0; pos<8; pos++)
|
for (pos=0; pos<8; pos++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#ifndef __NONCE2KEY_H
|
#ifndef __NONCE2KEY_H
|
||||||
#define __NONCE2KEY_H
|
#define __NONCE2KEY_H
|
||||||
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "crapto1.h"
|
#include "crapto1.h"
|
||||||
|
|
|
@ -197,6 +197,9 @@ static void *main_loop(void *targ) {
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
|
|
||||||
|
printf("lala: %08"llx"",(uint64_t)0xaabb11223344);
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
printf("syntax: %s <port>\n\n",argv[0]);
|
printf("syntax: %s <port>\n\n",argv[0]);
|
||||||
|
|
|
@ -12,6 +12,10 @@
|
||||||
#ifndef PROXMARK3_H__
|
#ifndef PROXMARK3_H__
|
||||||
#define PROXMARK3_H__
|
#define PROXMARK3_H__
|
||||||
|
|
||||||
|
#define __STDC_FORMAT_MACROS
|
||||||
|
#include <inttypes.h>
|
||||||
|
#define llx PRIx64
|
||||||
|
|
||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
#include "usb_cmd.h"
|
#include "usb_cmd.h"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "crapto1.h"
|
#include "crapto1.h"
|
||||||
|
#define __STDC_FORMAT_MACROS
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#define llx PRIx64
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
typedef unsigned char byte_t;
|
typedef unsigned char byte_t;
|
||||||
|
|
||||||
|
@ -18,13 +20,13 @@ int main(const int argc, const char* argv[]) {
|
||||||
}
|
}
|
||||||
sscanf(argv[1],"%08x",&uid);
|
sscanf(argv[1],"%08x",&uid);
|
||||||
sscanf(argv[2],"%08x",&nt);
|
sscanf(argv[2],"%08x",&nt);
|
||||||
sscanf(argv[3],"%016llx",&par_info);
|
sscanf(argv[3],"%016"llx,&par_info);
|
||||||
sscanf(argv[4],"%016llx",&ks_info);
|
sscanf(argv[4],"%016"llx,&ks_info);
|
||||||
|
|
||||||
// Reset the last three significant bits of the reader nonce
|
// Reset the last three significant bits of the reader nonce
|
||||||
nr &= 0xffffff1f;
|
nr &= 0xffffff1f;
|
||||||
|
|
||||||
printf("\nuid(%08x) nt(%08x) par(%016llx) ks(%016llx)\n\n",uid,nt,par_info,ks_info);
|
printf("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx")\n\n",uid,nt,par_info,ks_info);
|
||||||
|
|
||||||
for (pos=0; pos<8; pos++)
|
for (pos=0; pos<8; pos++)
|
||||||
{
|
{
|
||||||
|
@ -50,7 +52,7 @@ int main(const int argc, const char* argv[]) {
|
||||||
state = lfsr_common_prefix(nr,rr,ks3x,par);
|
state = lfsr_common_prefix(nr,rr,ks3x,par);
|
||||||
lfsr_rollback_word(state,uid^nt,0);
|
lfsr_rollback_word(state,uid^nt,0);
|
||||||
crypto1_get_lfsr(state,&key_recovered);
|
crypto1_get_lfsr(state,&key_recovered);
|
||||||
printf("\nkey recovered: %012llx\n\n",key_recovered);
|
printf("\nkey recovered: %012"llx"\n\n",key_recovered);
|
||||||
crypto1_destroy(state);
|
crypto1_destroy(state);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue