FIX: made the authentication part a bit clearer. It now uses two booleans to seperate which type of authentication was requested from user.

This commit is contained in:
iceman1001 2015-05-20 21:44:22 +02:00
parent 1fa96198bb
commit c81a80dc96

View file

@ -620,12 +620,13 @@ int CmdHF14AMfUInfo(const char *Cmd){
int status;
bool errors = false;
bool hasAuthKey = false;
bool hasPwdKey = false;
bool locked = false;
uint8_t cmdp = 0;
uint8_t datalen = 0;
uint8_t authenticationkey[16] = {0x00};
uint8_t pack[4] = {0,0,0,0};
int len=0;
int len = 0;
while(param_getchar(Cmd, cmdp) != 0x00)
{
@ -641,7 +642,7 @@ int CmdHF14AMfUInfo(const char *Cmd){
if ( !datalen ) {
memcpy(authenticationkey, data, 4);
cmdp += 2;
hasAuthKey = true;
hasPwdKey = true;
break;
}
// UL-C size key
@ -672,16 +673,17 @@ int CmdHF14AMfUInfo(const char *Cmd){
PrintAndLog("-------------------------------------------------------------");
ul_print_type(tagtype, 6);
if (!ul_select(&card)) return 0;
if ( hasAuthKey && (tagtype & UL_C)) {
//will select card automatically and close connection on error
if (!ulc_authentication(authenticationkey, false)) {
PrintAndLog("Error: Authentication Failed UL-C");
return 0;
}
} else {
if ( !ul_select(&card) ) return 0;
}
if (hasAuthKey) {
if ( hasPwdKey ) {
len = ulev1_requestAuthentication(authenticationkey, pack, sizeof(pack));
if (len < 1) {
ul_switch_off_field();
@ -689,7 +691,6 @@ int CmdHF14AMfUInfo(const char *Cmd){
return 0;
}
}
}
// read pages 0,1,2,3 (should read 4pages)
status = ul_read(0, data, sizeof(data));
@ -698,6 +699,7 @@ int CmdHF14AMfUInfo(const char *Cmd){
PrintAndLog("Error: tag didn't answer to READ");
return status;
}
if (status == 16) {
ul_print_default(data);
ndef_print_CC(data+12);