FIX: camelcase on a variable caused some issues.

This commit is contained in:
iceman1001 2015-05-22 08:48:23 +02:00
commit a7e7cd419a

View file

@ -637,12 +637,13 @@ int CmdHF14AMfUInfo(const char *Cmd){
bool locked = false; bool locked = false;
bool swapEndian = false; bool swapEndian = false;
uint8_t cmdp = 0; uint8_t cmdp = 0;
uint8_t datalen = 0; uint8_t dataLen = 0;
uint8_t authenticationkey[16] = {0x00}; uint8_t authenticationkey[16] = {0x00};
uint8_t *authkeyptr = authenticationkey; uint8_t *authkeyptr = authenticationkey;
uint8_t *key; uint8_t *key;
uint8_t pack[4] = {0,0,0,0}; uint8_t pack[4] = {0,0,0,0};
int len = 0; int len = 0;
char tempStr[50];
while(param_getchar(Cmd, cmdp) != 0x00) while(param_getchar(Cmd, cmdp) != 0x00)
{ {
@ -653,25 +654,16 @@ int CmdHF14AMfUInfo(const char *Cmd){
return usage_hf_mfu_info(); return usage_hf_mfu_info();
case 'k': case 'k':
case 'K': case 'K':
// EV1/NTAG size key dataLen = param_getstr(Cmd, cmdp+1, tempStr);
datalen = param_gethex(Cmd, cmdp+1, data, 8); if (dataLen == 32 || dataLen == 8) { //ul-c or ev1/ntag key length
if ( !datalen ) { errors = param_gethex(tempStr, 0, authenticationkey, dataLen);
memcpy(authenticationkey, data, 4); dataLen /= 2; // handled as bytes from now on
cmdp += 2; } else {
hasAuthKey = true; PrintAndLog("\nERROR: Key is incorrect length\n");
datalen = 4;
break;
}
// UL-C size key
datalen = param_gethex(Cmd, cmdp+1, data, 32);
if (!datalen){
memcpy(authenticationkey, data, 16);
cmdp += 2;
hasAuthKey = true;
datalen = 16;
break;
}
errors = true; errors = true;
}
cmdp += 2;
hasAuthKey = true;
break; break;
case 'l': case 'l':
case 'L': case 'L':
@ -697,7 +689,7 @@ int CmdHF14AMfUInfo(const char *Cmd){
ul_print_type(tagtype, 6); ul_print_type(tagtype, 6);
// Swap endianness // Swap endianness
if (swapEndian && hasAuthKey) authkeyptr = SwapEndian64(authenticationkey, datalen, (datalen == 16) ? 8 : 4 ); if (swapEndian && hasAuthKey) authkeyptr = SwapEndian64(authenticationkey, dataLen, (dataLen == 16) ? 8 : 4 );
if (!ul_auth_select( &card, tagtype, hasAuthKey, authkeyptr, pack, sizeof(pack))) return -1; if (!ul_auth_select( &card, tagtype, hasAuthKey, authkeyptr, pack, sizeof(pack))) return -1;
@ -1184,7 +1176,7 @@ int CmdHF14AMfUDump(const char *Cmd){
uint8_t dataLen=0; uint8_t dataLen=0;
uint8_t cmdp =0; uint8_t cmdp =0;
uint8_t authenticationkey[16] = {0x00}; uint8_t authenticationkey[16] = {0x00};
uint8_t *authkeyptr = authenticationkey; uint8_t *authKeyPtr = authenticationkey;
size_t fileNlen = 0; size_t fileNlen = 0;
bool errors = false; bool errors = false;
bool swapEndian = false; bool swapEndian = false;
@ -1202,15 +1194,13 @@ int CmdHF14AMfUDump(const char *Cmd){
case 'k': case 'k':
case 'K': case 'K':
dataLen = param_getstr(Cmd, cmdp+1, tempStr); dataLen = param_getstr(Cmd, cmdp+1, tempStr);
if (dataLen == 32) //ul-c if (dataLen == 32 || dataLen == 8) { //ul-c or ev1/ntag key length
errors = param_gethex(tempStr, 0, authenticationkey, dataLen); errors = param_gethex(tempStr, 0, authenticationkey, dataLen);
else if (dataLen == 8) //ev1/ntag dataLen /= 2;
errors = param_gethex(tempStr, 0, authenticationkey, dataLen); } else {
else{
PrintAndLog("\nERROR: Key is incorrect length\n"); PrintAndLog("\nERROR: Key is incorrect length\n");
errors = true; errors = true;
} }
cmdp += 2; cmdp += 2;
hasAuthKey = true; hasAuthKey = true;
break; break;
@ -1249,7 +1239,8 @@ int CmdHF14AMfUDump(const char *Cmd){
//Validations //Validations
if(errors) return usage_hf_mfu_dump(); if(errors) return usage_hf_mfu_dump();
if (swapEndian && hasAuthKey) authkeyptr = SwapEndian64(authenticationkey, dataLen/2, (dataLen == 32) ? 8 : 4); if (swapEndian && hasAuthKey)
authKeyPtr = SwapEndian64(authenticationkey, dataLen, (dataLen == 16) ? 8 : 4);
TagTypeUL_t tagtype = GetHF14AMfU_Type(); TagTypeUL_t tagtype = GetHF14AMfU_Type();
if (tagtype == UL_ERROR) return -1; if (tagtype == UL_ERROR) return -1;
@ -1268,7 +1259,7 @@ int CmdHF14AMfUDump(const char *Cmd){
else else
c.arg[2] = 2; //UL_EV1/NTAG auth c.arg[2] = 2; //UL_EV1/NTAG auth
memcpy(c.d.asBytes, authkeyptr, dataLen/2); memcpy(c.d.asBytes, authKeyPtr, dataLen);
} }
SendCommand(&c); SendCommand(&c);
UsbCommand resp; UsbCommand resp;
@ -1312,16 +1303,15 @@ int CmdHF14AMfUDump(const char *Cmd){
} }
// add keys to block dump // add keys to block dump
// cant add swapped bytes-- ULC saves it as big endian in user memory. if (hasAuthKey) {
//if (swapEndian) authkeyptr = SwapEndian64(authenticationkey, dataLen/2, (dataLen == 32) ? 8 : 4); if (!swapEndian) {
authKeyPtr = SwapEndian64(authenticationkey, dataLen, (dataLen == 16) ? 8 : 4);
// if (hasAuthKey && (tagtype & UL_C)){ //UL_C memcpy(data + Pages*4, authKeyPtr, dataLen);
// memcpy(data + Pages*4, authkeyptr, dataLen/2); } else {
// Pages += 4; memcpy(data + Pages*4, authenticationkey, dataLen);
// } else if (hasAuthKey) { //not sure output is in correct location. }
// memcpy(data + Pages*4, authkeyptr, dataLen/2); Pages += dataLen/4; //not sure output is in correct location for all tag types.
// Pages += 1; }
// }
for (i = 0; i < Pages; ++i) { for (i = 0; i < Pages; ++i) {
if ( i < 3 ) { if ( i < 3 ) {
@ -1372,7 +1362,7 @@ int CmdHF14AMfUDump(const char *Cmd){
case 43: tmplockbit = bit2[9]; break; //auth1 case 43: tmplockbit = bit2[9]; break; //auth1
default: break; default: break;
} }
PrintAndLog("Block %02x:%s [%d]", i,sprint_hex(data + i * 4, 4),tmplockbit); PrintAndLog("Block %02x:%s [%d] {%.4s}", i, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
} }
// user supplied filename? // user supplied filename?