fix: prevent hf mf mifare from always running twice

(issue #510)
This commit is contained in:
pwpiwi 2018-02-03 18:24:32 +01:00
parent 32e6891a05
commit d86ee73da5

View file

@ -178,6 +178,7 @@ int mfDarkside(uint64_t *key)
continue; continue;
} }
if (par_list == 0) {
qsort(keylist, keycount, sizeof(*keylist), compare_uint64); qsort(keylist, keycount, sizeof(*keylist), compare_uint64);
keycount = intersection(last_keylist, keylist); keycount = intersection(last_keylist, keylist);
if (keycount == 0) { if (keycount == 0) {
@ -185,6 +186,7 @@ int mfDarkside(uint64_t *key)
last_keylist = keylist; last_keylist = keylist;
continue; continue;
} }
}
if (keycount > 1) { if (keycount > 1) {
PrintAndLog("Found %u possible keys. Trying to authenticate with each of them ...\n", keycount); PrintAndLog("Found %u possible keys. Trying to authenticate with each of them ...\n", keycount);
@ -198,10 +200,10 @@ int mfDarkside(uint64_t *key)
for (int i = 0; i < keycount; i += max_keys) { for (int i = 0; i < keycount; i += max_keys) {
int size = keycount - i > max_keys ? max_keys : keycount - i; int size = keycount - i > max_keys ? max_keys : keycount - i;
for (int j = 0; j < size; j++) { for (int j = 0; j < size; j++) {
if (last_keylist == NULL) { if (par_list == 0) {
num_to_bytes(keylist[i*max_keys + j], 6, keyBlock);
} else {
num_to_bytes(last_keylist[i*max_keys + j], 6, keyBlock); num_to_bytes(last_keylist[i*max_keys + j], 6, keyBlock);
} else {
num_to_bytes(keylist[i*max_keys + j], 6, keyBlock);
} }
} }
if (!mfCheckKeys(0, 0, false, size, keyBlock, key)) { if (!mfCheckKeys(0, 0, false, size, keyBlock, key)) {