fix little endian vs big endian in the macros

This commit is contained in:
iceman1001 2021-06-22 07:49:17 +02:00
commit 88d9942d3f
3 changed files with 13 additions and 5 deletions

View file

@ -464,7 +464,9 @@ int CmdEM4x50Chk(const char *Cmd) {
} }
size_t datalen = 0; size_t datalen = 0;
uint8_t data[100000] = {0x0};
// 2021 iceman: how many keys shall we reserv space for? The t55xx dictionary has 139 keys.
uint8_t data[2000 * 4] = {0x0};
uint8_t *keys = data; uint8_t *keys = data;
uint32_t key_count = 0; uint32_t key_count = 0;

View file

@ -251,7 +251,7 @@ int CmdEM4x70Unlock(const char *Cmd) {
return PM3_EINVARG; return PM3_EINVARG;
} }
etd.pin = BYTES2UINT32(pin); etd.pin = BYTES2UINT32_BE(pin);
clearCommandBuffer(); clearCommandBuffer();
SendCommandNG(CMD_LF_EM4X70_UNLOCK, (uint8_t *)&etd, sizeof(etd)); SendCommandNG(CMD_LF_EM4X70_UNLOCK, (uint8_t *)&etd, sizeof(etd));
@ -370,7 +370,7 @@ int CmdEM4x70WritePIN(const char *Cmd) {
return PM3_EINVARG; return PM3_EINVARG;
} }
etd.pin = BYTES2UINT32(pin); etd.pin = BYTES2UINT32_BE(pin);
clearCommandBuffer(); clearCommandBuffer();
SendCommandNG(CMD_LF_EM4X70_WRITEPIN, (uint8_t *)&etd, sizeof(etd)); SendCommandNG(CMD_LF_EM4X70_WRITEPIN, (uint8_t *)&etd, sizeof(etd));

View file

@ -131,15 +131,21 @@ extern bool tearoff_enabled;
#endif #endif
#endif #endif
// convert 2 bytes to U16 // convert 2 bytes to U16 in little endian
#ifndef BYTES2UINT16 #ifndef BYTES2UINT16
# define BYTES2UINT16(x) ((x[1] << 8) | (x[0])) # define BYTES2UINT16(x) ((x[1] << 8) | (x[0]))
#endif #endif
// convert 4 bytes to U32 // convert 4 bytes to U32 in little endian
#ifndef BYTES2UINT32 #ifndef BYTES2UINT32
# define BYTES2UINT32(x) ((x[3] << 24) | (x[2] << 16) | (x[1] << 8) | (x[0])) # define BYTES2UINT32(x) ((x[3] << 24) | (x[2] << 16) | (x[1] << 8) | (x[0]))
#endif #endif
// convert 4 bytes to U32 in big endian
#ifndef BYTES2UINT32_BE
# define BYTES2UINT32_BE(x) ((x[0] << 24) | (x[1] << 16) | (x[2] << 8) | (x[3]))
#endif
#define EVEN 0 #define EVEN 0
#define ODD 1 #define ODD 1