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,12 +178,14 @@ int mfDarkside(uint64_t *key)
continue; continue;
} }
qsort(keylist, keycount, sizeof(*keylist), compare_uint64); if (par_list == 0) {
keycount = intersection(last_keylist, keylist); qsort(keylist, keycount, sizeof(*keylist), compare_uint64);
if (keycount == 0) { keycount = intersection(last_keylist, keylist);
free(last_keylist); if (keycount == 0) {
last_keylist = keylist; free(last_keylist);
continue; last_keylist = keylist;
continue;
}
} }
if (keycount > 1) { if (keycount > 1) {
@ -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)) {