#include "mifare.h"
#include "cmdhfmfu.h"
#include "nonce2key/nonce2key.h"
-
-#define llx PRIx64
+#include "cmdhf.h"
static int CmdHelp(const char *Cmd);
static void waitCmd(uint8_t iLen);
int CmdHF14AList(const char *Cmd)
{
- PrintAndLog("Deprecated command, use 'hf list 14a' instead");
+ //PrintAndLog("Deprecated command, use 'hf list 14a' instead");
+ CmdHFList("14a");
return 0;
}
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
memcpy(data, resp.d.asBytes, len);
tryMfk32(uid, data, key);
- tryMfk32_moebius(uid, data, key);
+ //tryMfk32_moebius(uid, data, key);
//tryMfk64(uid, data, key);
PrintAndLog("--");
}
if(topazmode)
c.arg[0] |= ISO14A_TOPAZMODE;
-
+
// Max buffer is USB_CMD_DATA_SIZE
- c.arg[1] = (datalen & 0xFFFF) | (numbits << 16);
- memcpy(c.d.asBytes,data,datalen);
+ datalen = (datalen > USB_CMD_DATA_SIZE) ? USB_CMD_DATA_SIZE : datalen;
+
+ c.arg[1] = (datalen & 0xFFFF) | (uint32_t)(numbits << 16);
+ memcpy(c.d.asBytes, data, datalen);
clearCommandBuffer();
SendCommand(&c);
}
static void waitCmd(uint8_t iSelect) {
- uint8_t *recv;
UsbCommand resp;
- char *hexout;
+ uint16_t len = 0;
- if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
- recv = resp.d.asBytes;
- uint8_t iLen = iSelect ? resp.arg[1] : resp.arg[0];
- PrintAndLog("received %i octets",iLen);
- if(!iLen)
+ if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
+ len = iSelect ? (resp.arg[1] & 0xffff) : (resp.arg[0] & 0xffff);
+ PrintAndLog("received %i octets", len);
+ if(!len)
return;
- hexout = (char *)malloc(iLen * 3 + 1);
- if (hexout != NULL) {
- for (int i = 0; i < iLen; i++) { // data in hex
- sprintf(&hexout[i * 3], "%02X ", recv[i]);
- }
- PrintAndLog("%s", hexout);
- free(hexout);
- } else {
- PrintAndLog("malloc failed your client has low memory?");
- }
+ PrintAndLog("%s", sprint_hex(resp.d.asBytes, len) );
} else {
PrintAndLog("timeout while waiting for reply.");
}
int CmdHF14A(const char *Cmd) {
// flush
- WaitForResponseTimeout(CMD_ACK,NULL,100);
+ clearCommandBuffer();
+ //WaitForResponseTimeout(CMD_ACK,NULL,100);
// parse
CmdsParse(CommandTable, Cmd);