cleaning up

This commit is contained in:
iceman1001 2019-03-09 21:59:00 +01:00
commit 112411042f

View file

@ -574,16 +574,16 @@ int HFiClassReader(const char *Cmd, bool loop, bool verbose) {
} }
int CmdHFiClassReader(const char *Cmd) { int CmdHFiClassReader(const char *Cmd) {
char cmdp = param_getchar(Cmd, 0); char cmdp = tolower(param_getchar(Cmd, 0));
if (cmdp == 'h' || cmdp == 'H') return usage_hf_iclass_reader(); if (cmdp == 'h') return usage_hf_iclass_reader();
bool findone = (cmdp == '1') ? false : true; bool findone = (cmdp == '1') ? false : true;
return HFiClassReader(Cmd, findone, true); return HFiClassReader(Cmd, findone, true);
} }
int CmdHFiClassReader_Replay(const char *Cmd) { int CmdHFiClassReader_Replay(const char *Cmd) {
char cmdp = param_getchar(Cmd, 0); char cmdp = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd)<1 || cmdp == 'H' || cmdp == 'h') return usage_hf_iclass_replay(); if (strlen(Cmd)<1 || cmdp == 'h') return usage_hf_iclass_replay();
uint8_t readerType = 0; uint8_t readerType = 0;
uint8_t MAC[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t MAC[4] = {0x00, 0x00, 0x00, 0x00};
@ -610,13 +610,12 @@ int iclassEmlSetMem(uint8_t *data, int blockNum, int blocksCount) {
int CmdHFiClassELoad(const char *Cmd) { int CmdHFiClassELoad(const char *Cmd) {
char ctmp = param_getchar(Cmd, 0); char ctmp = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd)< 1 || ctmp == 'h' || ctmp == 'H') return usage_hf_iclass_eload(); if (strlen(Cmd)< 1 || ctmp == 'h') return usage_hf_iclass_eload();
if ( ctmp != 'f' && ctmp != 'F') return usage_hf_iclass_eload(); if ( ctmp != 'f' ) return usage_hf_iclass_eload();
//File handling and reading //File handling and reading
FILE *f;
char filename[FILE_PATH_SIZE]; char filename[FILE_PATH_SIZE];
if ( param_getstr(Cmd, 1, filename, FILE_PATH_SIZE) >= FILE_PATH_SIZE ) { if ( param_getstr(Cmd, 1, filename, FILE_PATH_SIZE) >= FILE_PATH_SIZE ) {
@ -624,7 +623,7 @@ int CmdHFiClassELoad(const char *Cmd) {
return 1; return 1;
} }
f = fopen(filename, "rb"); FILE *f = fopen(filename, "rb");
if ( !f ){ if ( !f ){
PrintAndLogEx(FAILED, "File: " _YELLOW_(%s) ": not found or locked.", filename); PrintAndLogEx(FAILED, "File: " _YELLOW_(%s) ": not found or locked.", filename);
return 1; return 1;
@ -703,8 +702,8 @@ static int readKeyfile(const char *filename, size_t len, uint8_t* buffer) {
int CmdHFiClassDecrypt(const char *Cmd) { int CmdHFiClassDecrypt(const char *Cmd) {
char opt = param_getchar(Cmd, 0); char opt = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd)<1 || opt == 'h' || opt == 'H') return usage_hf_iclass_decrypt(); if (strlen(Cmd)<1 || opt == 'h') return usage_hf_iclass_decrypt();
uint8_t key[16] = { 0 }; uint8_t key[16] = { 0 };
if (readKeyfile("iclass_decryptionkey.bin", 16, key)) return usage_hf_iclass_decrypt(); if (readKeyfile("iclass_decryptionkey.bin", 16, key)) return usage_hf_iclass_decrypt();
@ -807,8 +806,8 @@ static int iClassEncryptBlkData(uint8_t *blkData) {
int CmdHFiClassEncryptBlk(const char *Cmd) { int CmdHFiClassEncryptBlk(const char *Cmd) {
uint8_t blkData[8] = {0}; uint8_t blkData[8] = {0};
char opt = param_getchar(Cmd, 0); char opt = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd)<1 || opt == 'h' || opt == 'H') return usage_hf_iclass_encrypt(); if (strlen(Cmd)<1 || opt == 'h') return usage_hf_iclass_encrypt();
//get the bytes to encrypt //get the bytes to encrypt
if (param_gethex(Cmd, 0, blkData, 16)) { if (param_gethex(Cmd, 0, blkData, 16)) {
@ -924,12 +923,10 @@ int CmdHFiClassReader_Dump(const char *Cmd) {
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch (param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_dump(); return usage_hf_iclass_dump();
case 'c': case 'c':
case 'C':
have_credit_key = true; have_credit_key = true;
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
@ -949,12 +946,10 @@ int CmdHFiClassReader_Dump(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'e': case 'e':
case 'E':
elite = true; elite = true;
cmdp++; cmdp++;
break; break;
case 'f': case 'f':
case 'F':
fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename)); fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename));
if (fileNameLen < 1) { if (fileNameLen < 1) {
PrintAndLogEx(WARNING, "no filename found after f"); PrintAndLogEx(WARNING, "no filename found after f");
@ -963,7 +958,6 @@ int CmdHFiClassReader_Dump(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'k': case 'k':
case 'K':
have_debit_key = true; have_debit_key = true;
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
@ -983,12 +977,10 @@ int CmdHFiClassReader_Dump(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'r': case 'r':
case 'R':
rawkey = true; rawkey = true;
cmdp++; cmdp++;
break; break;
case 'v': case 'v':
case 'V':
verbose = true; verbose = true;
cmdp++; cmdp++;
break; break;
@ -1199,12 +1191,10 @@ int CmdHFiClass_WriteBlock(const char *Cmd) {
bool verbose = false; bool verbose = false;
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch(param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_writeblock(); return usage_hf_iclass_writeblock();
case 'b': case 'b':
case 'B':
if (param_gethex(Cmd, cmdp+1, &blockno, 2)) { if (param_gethex(Cmd, cmdp+1, &blockno, 2)) {
PrintAndLogEx(WARNING, "Block No must include 2 HEX symbols\n"); PrintAndLogEx(WARNING, "Block No must include 2 HEX symbols\n");
errors = true; errors = true;
@ -1212,12 +1202,10 @@ int CmdHFiClass_WriteBlock(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'c': case 'c':
case 'C':
use_credit_key = true; use_credit_key = true;
cmdp++; cmdp++;
break; break;
case 'd': case 'd':
case 'D':
if (param_gethex(Cmd, cmdp+1, bldata, 16)) { if (param_gethex(Cmd, cmdp+1, bldata, 16)) {
PrintAndLogEx(WARNING, "Data must include 16 HEX symbols\n"); PrintAndLogEx(WARNING, "Data must include 16 HEX symbols\n");
errors = true; errors = true;
@ -1225,12 +1213,10 @@ int CmdHFiClass_WriteBlock(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'e': case 'e':
case 'E':
elite = true; elite = true;
cmdp++; cmdp++;
break; break;
case 'k': case 'k':
case 'K':
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
errors = param_gethex(tempStr, 0, KEY, dataLen); errors = param_gethex(tempStr, 0, KEY, dataLen);
@ -1249,12 +1235,10 @@ int CmdHFiClass_WriteBlock(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'r': case 'r':
case 'R':
rawkey = true; rawkey = true;
cmdp++; cmdp++;
break; break;
case 'v': case 'v':
case 'V':
verbose = true; verbose = true;
cmdp++; cmdp++;
break; break;
@ -1287,12 +1271,10 @@ int CmdHFiClassCloneTag(const char *Cmd) {
bool verbose = false; bool verbose = false;
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch(param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_clone(); return usage_hf_iclass_clone();
case 'b': case 'b':
case 'B':
if (param_gethex(Cmd, cmdp+1, &startblock, 2)) { if (param_gethex(Cmd, cmdp+1, &startblock, 2)) {
PrintAndLogEx(WARNING, "start block No must include 2 HEX symbols\n"); PrintAndLogEx(WARNING, "start block No must include 2 HEX symbols\n");
errors = true; errors = true;
@ -1300,17 +1282,14 @@ int CmdHFiClassCloneTag(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'c': case 'c':
case 'C':
use_credit_key = true; use_credit_key = true;
cmdp++; cmdp++;
break; break;
case 'e': case 'e':
case 'E':
elite = true; elite = true;
cmdp++; cmdp++;
break; break;
case 'f': case 'f':
case 'F':
fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename)); fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename));
if (fileNameLen < 1) { if (fileNameLen < 1) {
PrintAndLogEx(WARNING, "No filename found after f"); PrintAndLogEx(WARNING, "No filename found after f");
@ -1319,7 +1298,6 @@ int CmdHFiClassCloneTag(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'k': case 'k':
case 'K':
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
errors = param_gethex(tempStr, 0, KEY, dataLen); errors = param_gethex(tempStr, 0, KEY, dataLen);
@ -1338,7 +1316,6 @@ int CmdHFiClassCloneTag(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'l': case 'l':
case 'L':
if (param_gethex(Cmd, cmdp+1, &endblock, 2)) { if (param_gethex(Cmd, cmdp+1, &endblock, 2)) {
PrintAndLogEx(WARNING, "start Block No must include 2 HEX symbols\n"); PrintAndLogEx(WARNING, "start Block No must include 2 HEX symbols\n");
errors = true; errors = true;
@ -1346,12 +1323,10 @@ int CmdHFiClassCloneTag(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'r': case 'r':
case 'R':
rawkey = true; rawkey = true;
cmdp++; cmdp++;
break; break;
case 'v': case 'v':
case 'V':
verbose = true; verbose = true;
cmdp++; cmdp++;
break; break;
@ -1480,12 +1455,10 @@ int CmdHFiClass_ReadBlock(const char *Cmd) {
bool verbose = false; bool verbose = false;
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch (param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_readblock(); return usage_hf_iclass_readblock();
case 'b': case 'b':
case 'B':
if (param_gethex(Cmd, cmdp+1, &blockno, 2)) { if (param_gethex(Cmd, cmdp+1, &blockno, 2)) {
PrintAndLogEx(WARNING, "Block No must include 2 HEX symbols\n"); PrintAndLogEx(WARNING, "Block No must include 2 HEX symbols\n");
errors = true; errors = true;
@ -1493,17 +1466,14 @@ int CmdHFiClass_ReadBlock(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'c': case 'c':
case 'C':
keyType = 0x18; keyType = 0x18;
cmdp++; cmdp++;
break; break;
case 'e': case 'e':
case 'E':
elite = true; elite = true;
cmdp++; cmdp++;
break; break;
case 'k': case 'k':
case 'K':
auth = true; auth = true;
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
@ -1523,12 +1493,10 @@ int CmdHFiClass_ReadBlock(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'r': case 'r':
case 'R':
rawkey = true; rawkey = true;
cmdp++; cmdp++;
break; break;
case 'v': case 'v':
case 'V':
verbose = true; verbose = true;
cmdp++; cmdp++;
break; break;
@ -1546,7 +1514,7 @@ int CmdHFiClass_ReadBlock(const char *Cmd) {
} }
int CmdHFiClass_loclass(const char *Cmd) { int CmdHFiClass_loclass(const char *Cmd) {
char opt = param_getchar(Cmd, 0); char opt = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd)<1 || opt == 'h') if (strlen(Cmd)<1 || opt == 'h')
usage_hf_iclass_loclass(); usage_hf_iclass_loclass();
@ -1712,12 +1680,10 @@ int CmdHFiClassCalcNewKey(const char *Cmd) {
bool errors = false; bool errors = false;
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch(param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_calc_newkey(); return usage_hf_iclass_calc_newkey();
case 'e': case 'e':
case 'E':
dataLen = param_getstr(Cmd, cmdp, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp, tempStr, sizeof(tempStr));
if (dataLen==2) if (dataLen==2)
oldElite = true; oldElite = true;
@ -1725,7 +1691,6 @@ int CmdHFiClassCalcNewKey(const char *Cmd) {
cmdp++; cmdp++;
break; break;
case 'n': case 'n':
case 'N':
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
errors = param_gethex(tempStr, 0, NEWKEY, dataLen); errors = param_gethex(tempStr, 0, NEWKEY, dataLen);
@ -1744,7 +1709,6 @@ int CmdHFiClassCalcNewKey(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'o': case 'o':
case 'O':
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { if (dataLen == 16) {
errors = param_gethex(tempStr, 0, OLDKEY, dataLen); errors = param_gethex(tempStr, 0, OLDKEY, dataLen);
@ -1763,7 +1727,6 @@ int CmdHFiClassCalcNewKey(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 's': case 's':
case 'S':
givenCSN = true; givenCSN = true;
if (param_gethex(Cmd, cmdp+1, CSN, 16)) if (param_gethex(Cmd, cmdp+1, CSN, 16))
return usage_hf_iclass_calc_newkey(); return usage_hf_iclass_calc_newkey();
@ -1861,12 +1824,10 @@ int CmdHFiClassManageKeys(const char *Cmd) {
uint8_t cmdp = 0; uint8_t cmdp = 0;
while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) {
switch(param_getchar(Cmd, cmdp)) { switch (tolower(param_getchar(Cmd, cmdp))) {
case 'h': case 'h':
case 'H':
return usage_hf_iclass_managekeys(); return usage_hf_iclass_managekeys();
case 'f': case 'f':
case 'F':
fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename)); fileNameLen = param_getstr(Cmd, cmdp+1, filename, sizeof(filename));
if (fileNameLen < 1) { if (fileNameLen < 1) {
PrintAndLogEx(WARNING, "No filename found after f"); PrintAndLogEx(WARNING, "No filename found after f");
@ -1875,7 +1836,6 @@ int CmdHFiClassManageKeys(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'n': case 'n':
case 'N':
keyNbr = param_get8(Cmd, cmdp+1); keyNbr = param_get8(Cmd, cmdp+1);
if (keyNbr >= ICLASS_KEYS_MAX) { if (keyNbr >= ICLASS_KEYS_MAX) {
PrintAndLogEx(WARNING, "Invalid block number"); PrintAndLogEx(WARNING, "Invalid block number");
@ -1884,7 +1844,6 @@ int CmdHFiClassManageKeys(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'k': case 'k':
case 'K':
operation += 3; //set key operation += 3; //set key
dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr)); dataLen = param_getstr(Cmd, cmdp+1, tempStr, sizeof(tempStr));
if (dataLen == 16) { //ul-c or ev1/ntag key length if (dataLen == 16) { //ul-c or ev1/ntag key length
@ -1896,17 +1855,14 @@ int CmdHFiClassManageKeys(const char *Cmd) {
cmdp += 2; cmdp += 2;
break; break;
case 'p': case 'p':
case 'P':
operation += 4; //print keys in memory operation += 4; //print keys in memory
cmdp++; cmdp++;
break; break;
case 'l': case 'l':
case 'L':
operation += 5; //load keys from file operation += 5; //load keys from file
cmdp++; cmdp++;
break; break;
case 's': case 's':
case 'S':
operation += 6; //save keys to file operation += 6; //save keys to file
cmdp++; cmdp++;
break; break;
@ -2491,10 +2447,10 @@ int CmdHFiClassPermuteKey(const char *Cmd) {
uint8_t data[16] = {0}; uint8_t data[16] = {0};
bool isReverse = false; bool isReverse = false;
int len = 0; int len = 0;
char cmdp = param_getchar(Cmd, 0); char cmdp = tolower(param_getchar(Cmd, 0));
if (strlen(Cmd) == 0|| cmdp == 'h' || cmdp == 'H') return usage_hf_iclass_permutekey(); if (strlen(Cmd) == 0|| cmdp == 'h') return usage_hf_iclass_permutekey();
isReverse = ( cmdp == 'r' || cmdp == 'R' ); isReverse = ( cmdp == 'r' );
param_gethex_ex(Cmd, 1, data, &len); param_gethex_ex(Cmd, 1, data, &len);
if ( len%2 ) return usage_hf_iclass_permutekey(); if ( len%2 ) return usage_hf_iclass_permutekey();