mirror of
				https://github.com/Proxmark/proxmark3.git
				synced 2025-10-29 07:26:24 +08:00 
			
		
		
		
	implemented ISO 15693 error message decoding and fixed error code offset
This commit is contained in:
		
							parent
							
								
									31b6e9af2b
								
							
						
					
					
						commit
						b4a9d8419f
					
				
					 1 changed files with 17 additions and 7 deletions
				
			
		|  | @ -134,10 +134,20 @@ static char* getTagInfo(uint8_t *uid) { | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| // will return a clear-text message to an errorcode
 | ||||
| // return a clear-text message to an errorcode
 | ||||
| static char* TagErrorStr(uint8_t error) { | ||||
| 	// TODO
 | ||||
| 	return NULL; | ||||
| 	switch (error) { | ||||
| 		case 0x01: return "The command is not supported"; | ||||
| 		case 0x02: return "The command is not recognised"; | ||||
| 		case 0x03: return "The option is not supported."; | ||||
| 		case 0x0f: return "Unknown error."; | ||||
| 		case 0x10: return "The specified block is not available (doesn’t exist)."; | ||||
| 		case 0x11: return "The specified block is already -locked and thus cannot be locked again"; | ||||
| 		case 0x12: return "The specified block is locked and its content cannot be changed."; | ||||
| 		case 0x13: return "The specified block was not successfully programmed."; | ||||
| 		case 0x14: return "The specified block was not successfully locked."; | ||||
| 		default: return "Reserved for Future Use or Custom command error."; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -312,7 +322,7 @@ int CmdHF15DumpMem(const char*Cmd) { | |||
| 					blocknum++; | ||||
| 					// PrintAndLog("bn=%i",blocknum);
 | ||||
| 				} else { | ||||
| 					PrintAndLog("Tag returned Error %i: %s",recv[0],TagErrorStr(recv[0]));  | ||||
| 					PrintAndLog("Tag returned Error %i: %s",recv[1],TagErrorStr(recv[1]));  | ||||
| 					return 0; | ||||
| 				} | ||||
| 			} // else PrintAndLog("crc");
 | ||||
|  | @ -324,7 +334,7 @@ int CmdHF15DumpMem(const char*Cmd) { | |||
| 	else if (r && ISO15_CRC_CHECK!=Crc(r->d.asBytes,r->arg[0])) | ||||
| 		PrintAndLog("CRC Failed"); | ||||
| 	else  | ||||
| 		PrintAndLog("Tag returned Error %i: %s",recv[0],TagErrorStr(recv[0]));  | ||||
| 		PrintAndLog("Tag returned Error %i: %s",recv[1],TagErrorStr(recv[1]));  | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -649,7 +659,7 @@ int CmdHF15CmdRead(const char *Cmd) { | |||
| 				}					 | ||||
| 				PrintAndLog("%s",output);	 | ||||
| 			} else { | ||||
| 				PrintAndLog("Tag returned Error %i: %s",recv[0],TagErrorStr(recv[0]));  | ||||
| 				PrintAndLog("Tag returned Error %i: %s",recv[1],TagErrorStr(recv[1]));  | ||||
| 			}		    | ||||
| 		} else { | ||||
| 			PrintAndLog("CRC failed"); | ||||
|  | @ -731,7 +741,7 @@ int CmdHF15CmdWrite(const char *Cmd) { | |||
| 			if (!(recv[0] & ISO15_RES_ERROR)) {					 | ||||
| 				PrintAndLog("OK");	 | ||||
| 			} else { | ||||
| 				PrintAndLog("Tag returned Error %i: %s",recv[0],TagErrorStr(recv[0]));  | ||||
| 				PrintAndLog("Tag returned Error %i: %s",recv[1],TagErrorStr(recv[1]));  | ||||
| 			}		    | ||||
| 		} else { | ||||
| 			PrintAndLog("CRC failed"); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue