CHG: moved a xor function into util.c
CHG: added some calls to clearCommandBuffer() in /hf mfu/hf 14a sim/hf mf sim/ commands. CHG: minor adjustments to relative pathing.
This commit is contained in:
@@ -481,6 +481,8 @@ int CmdHF14ASim(const char *Cmd)
|
||||
uint64_t uid = 0;
|
||||
uint8_t cmdp = 0;
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
while(param_getchar(Cmd, cmdp) != 0x00)
|
||||
{
|
||||
switch(param_getchar(Cmd, cmdp))
|
||||
@@ -537,19 +539,18 @@ int CmdHF14ASim(const char *Cmd)
|
||||
|
||||
uint8_t data[40];
|
||||
uint8_t key[6];
|
||||
|
||||
UsbCommand resp;
|
||||
while(!ukbhit()){
|
||||
UsbCommand resp;
|
||||
WaitForResponseTimeout(CMD_ACK,&resp,1500);
|
||||
PrintAndLog("CMD_SIMULATE_MIFARE_CARD [%04X] -- %04X", CMD_SIMULATE_MIFARE_CARD, resp.arg[0]);
|
||||
if ( (resp.arg[0] & 0xffff) == CMD_SIMULATE_MIFARE_CARD ){
|
||||
memset(data, 0x00, sizeof(data));
|
||||
memset(key, 0x00, sizeof(key));
|
||||
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
|
||||
memcpy(data, resp.d.asBytes, len);
|
||||
tryMfk32(uid, data, key);
|
||||
//tryMfk64(uid, data, key);
|
||||
PrintAndLog("--");
|
||||
if ( WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
if ( (resp.arg[0] & 0xffff) == CMD_SIMULATE_MIFARE_CARD ){
|
||||
memset(data, 0x00, sizeof(data));
|
||||
memset(key, 0x00, sizeof(key));
|
||||
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
|
||||
memcpy(data, resp.d.asBytes, len);
|
||||
tryMfk32(uid, data, key);
|
||||
//tryMfk64(uid, data, key);
|
||||
PrintAndLog("--");
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -1012,8 +1012,10 @@ int CmdHF14AMf1kSim(const char *Cmd)
|
||||
uint8_t uid[7] = {0, 0, 0, 0, 0, 0, 0};
|
||||
uint8_t exitAfterNReads = 0;
|
||||
uint8_t flags = 0;
|
||||
|
||||
|
||||
uint8_t cmdp = param_getchar(Cmd, 0);
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
if (cmdp == 'h' || cmdp == 'H') {
|
||||
PrintAndLog("Usage: hf mf sim u <uid (8 hex symbols)> n <numreads> i x");
|
||||
@@ -1065,25 +1067,38 @@ int CmdHF14AMf1kSim(const char *Cmd)
|
||||
|
||||
if(flags & FLAG_INTERACTIVE)
|
||||
{
|
||||
uint64_t corr_uid = bytes_to_num(uid, ( flags & FLAG_4B_UID_IN_DATA ) ? 4 : 7 );
|
||||
|
||||
PrintAndLog("Press pm3-button to abort simulation");
|
||||
|
||||
uint8_t data[40];
|
||||
uint8_t key[6];
|
||||
|
||||
while(!ukbhit()){
|
||||
UsbCommand resp;
|
||||
WaitForResponseTimeout(CMD_ACK,&resp,1500);
|
||||
PrintAndLog("CMD_SIMULATE_MIFARE_CARD [%04X] -- %04X", CMD_SIMULATE_MIFARE_CARD, resp.arg[0]);
|
||||
if ( (resp.arg[0] & 0xffff) == CMD_SIMULATE_MIFARE_CARD ){
|
||||
memset(data, 0x00, sizeof(data));
|
||||
memset(key, 0x00, sizeof(key));
|
||||
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
|
||||
memcpy(data, resp.d.asBytes, len);
|
||||
tryMfk32(corr_uid, data, key);
|
||||
//tryMfk64(corr_uid, data, key);
|
||||
PrintAndLog("--");
|
||||
UsbCommand resp;
|
||||
while(!ukbhit() ){
|
||||
if ( WaitForResponseTimeout(CMD_ACK,&resp,1500) ) {
|
||||
if ( (resp.arg[0] & 0xffff) == CMD_SIMULATE_MIFARE_CARD ){
|
||||
memset(data, 0x00, sizeof(data));
|
||||
memset(key, 0x00, sizeof(key));
|
||||
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
|
||||
|
||||
memcpy(data, resp.d.asBytes, len);
|
||||
|
||||
uint64_t corr_uid = 0;
|
||||
if ( memcmp(data, "\x00\x00\x00\x00", 4) == 0 ) {
|
||||
corr_uid = (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0];
|
||||
}
|
||||
else {
|
||||
corr_uid |= (uint64_t)data[2] << 48;
|
||||
corr_uid |= (uint64_t)data[1] << 40;
|
||||
corr_uid |= (uint64_t)data[0] << 32;
|
||||
corr_uid |= data[7] << 24;
|
||||
corr_uid |= data[6] << 16;
|
||||
corr_uid |= data[5] << 8;
|
||||
corr_uid |= data[4];
|
||||
}
|
||||
tryMfk32(corr_uid, data, key);
|
||||
//tryMfk64(corr_uid, data, key);
|
||||
PrintAndLog("--");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,9 +36,6 @@ uint8_t key_defa_data[16] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
|
||||
uint8_t key_picc_data[16] = { 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f };
|
||||
|
||||
static int CmdHelp(const char *Cmd);
|
||||
static void xor(unsigned char * dst, unsigned char * src, size_t len);
|
||||
static int32_t le24toh (uint8_t data[3]);
|
||||
|
||||
|
||||
int CmdHF14ADesWb(const char *Cmd)
|
||||
{
|
||||
@@ -640,23 +637,14 @@ int CmdHF14ADesAuth(const char *Cmd){
|
||||
}
|
||||
|
||||
|
||||
static void xor(unsigned char * dst, unsigned char * src, size_t len) {
|
||||
for( ; len > 0; len--,dst++,src++)
|
||||
*dst ^= *src;
|
||||
}
|
||||
|
||||
static int32_t le24toh (uint8_t data[3]) {
|
||||
return (data[2] << 16) | (data[1] << 8) | data[0];
|
||||
}
|
||||
|
||||
static command_t CommandTable[] =
|
||||
{
|
||||
{"help", CmdHelp, 1, "This help"},
|
||||
{"auth", CmdHF14ADesAuth, 0, "Tries a MIFARE DesFire Authentication"},
|
||||
{"rb", CmdHF14ADesRb, 0, "Read MIFARE DesFire block"},
|
||||
{"wb", CmdHF14ADesWb, 0, "write MIFARE DesFire block"},
|
||||
{"info", CmdHF14ADesInfo, 0, "Get MIFARE DesFire information"},
|
||||
{"enum", CmdHF14ADesEnumApplications,0, "Tries enumerate all applications"},
|
||||
{"auth", CmdHF14ADesAuth, 0, "Tries a MIFARE DesFire Authentication"},
|
||||
{"rdbl", CmdHF14ADesRb, 0, "Read MIFARE DesFire block"},
|
||||
{"wrbl", CmdHF14ADesWb, 0, "write MIFARE DesFire block"},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -646,6 +646,8 @@ int CmdHF14AMfUInfo(const char *Cmd){
|
||||
int len = 0;
|
||||
char tempStr[50];
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
while(param_getchar(Cmd, cmdp) != 0x00)
|
||||
{
|
||||
switch(param_getchar(Cmd, cmdp))
|
||||
@@ -857,6 +859,8 @@ int CmdHF14AMfUWrBl(const char *Cmd){
|
||||
uint8_t authenticationkey[16] = {0x00};
|
||||
uint8_t *authKeyPtr = authenticationkey;
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
// starting with getting tagtype
|
||||
TagTypeUL_t tagtype = GetHF14AMfU_Type();
|
||||
if (tagtype == UL_ERROR) return -1;
|
||||
@@ -982,7 +986,9 @@ int CmdHF14AMfURdBl(const char *Cmd){
|
||||
uint8_t data[16] = {0x00};
|
||||
uint8_t authenticationkey[16] = {0x00};
|
||||
uint8_t *authKeyPtr = authenticationkey;
|
||||
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
// starting with getting tagtype
|
||||
TagTypeUL_t tagtype = GetHF14AMfU_Type();
|
||||
if (tagtype == UL_ERROR) return -1;
|
||||
@@ -1179,6 +1185,8 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||
uint8_t startPage = 0;
|
||||
char tempStr[50];
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
while(param_getchar(Cmd, cmdp) != 0x00)
|
||||
{
|
||||
switch(param_getchar(Cmd, cmdp))
|
||||
@@ -1403,6 +1411,8 @@ int CmdHF14AMfucAuth(const char *Cmd){
|
||||
|
||||
char cmdp = param_getchar(Cmd, 0);
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
//Change key to user defined one
|
||||
if (cmdp == 'k' || cmdp == 'K'){
|
||||
keyNo = param_get8(Cmd, 1);
|
||||
@@ -1542,6 +1552,8 @@ int CmdHF14AMfucSetPwd(const char *Cmd){
|
||||
|
||||
char cmdp = param_getchar(Cmd, 0);
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') {
|
||||
PrintAndLog("Usage: hf mfu setpwd <password (32 hex symbols)>");
|
||||
PrintAndLog(" [password] - (32 hex symbols)");
|
||||
@@ -1588,6 +1600,8 @@ int CmdHF14AMfucSetUid(const char *Cmd){
|
||||
uint8_t uid[7] = {0x00};
|
||||
char cmdp = param_getchar(Cmd, 0);
|
||||
|
||||
clearCommandBuffer();
|
||||
|
||||
if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') {
|
||||
PrintAndLog("Usage: hf mfu setuid <uid (14 hex symbols)>");
|
||||
PrintAndLog(" [uid] - (14 hex symbols)");
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "ui.h"
|
||||
#include "proxmark3.h"
|
||||
#include "cmdparser.h"
|
||||
#include "cmddata.h"
|
||||
#include "cmdhw.h"
|
||||
#include "cmdmain.h"
|
||||
#include "cmddata.h"
|
||||
|
||||
@@ -34,7 +34,7 @@ static int CmdHelp(const char *Cmd);
|
||||
static int CmdQuit(const char *Cmd);
|
||||
|
||||
//For storing command that are received from the device
|
||||
#define CMD_BUFFER_SIZE 50
|
||||
#define CMD_BUFFER_SIZE 60
|
||||
static UsbCommand cmdBuffer[CMD_BUFFER_SIZE];
|
||||
//Points to the next empty position to write to
|
||||
static int cmd_head;//Starts as 0
|
||||
|
||||
@@ -444,3 +444,12 @@ void wiegand_add_parity(char *target, char *source, char length)
|
||||
target += length;
|
||||
*(target)= GetParity(source + length / 2, ODD, length / 2);
|
||||
}
|
||||
|
||||
void xor(unsigned char * dst, unsigned char * src, size_t len) {
|
||||
for( ; len > 0; len--,dst++,src++)
|
||||
*dst ^= *src;
|
||||
}
|
||||
|
||||
int32_t le24toh (uint8_t data[3]) {
|
||||
return (data[2] << 16) | (data[1] << 8) | data[0];
|
||||
}
|
||||
|
||||
@@ -63,3 +63,6 @@ void binarraytobinstring(char *target, char *source, int length);
|
||||
uint8_t GetParity( char *string, uint8_t type, int length);
|
||||
void wiegand_add_parity(char *target, char *source, char length);
|
||||
|
||||
void xor(unsigned char * dst, unsigned char * src, size_t len);
|
||||
int32_t le24toh (uint8_t data[3]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user