fix: only add keys once when checking for reuse
This commit is contained in:
parent
ec3ca1cad1
commit
03e9c670d5
32
src/mfoc.c
32
src/mfoc.c
@ -362,21 +362,39 @@ int main(int argc, char *const argv[])
|
|||||||
bool did_hardnested=false;
|
bool did_hardnested=false;
|
||||||
check_keys:
|
check_keys:
|
||||||
if (did_hardnested) {
|
if (did_hardnested) {
|
||||||
|
use_default_key=false;
|
||||||
printf("\nChecking for key reuse...\n");
|
printf("\nChecking for key reuse...\n");
|
||||||
int i=0;
|
|
||||||
defKeys_len=0;
|
defKeys_len=0;
|
||||||
free(defKeys);
|
free(defKeys);
|
||||||
defKeys=malloc(0);
|
defKeys=malloc(0);
|
||||||
for (int i=0;i<t.num_sectors;++i) {
|
for (int i=0;i<t.num_sectors;++i) {
|
||||||
if (t.sectors[i].foundKeyA) {
|
if (t.sectors[i].foundKeyA) {
|
||||||
defKeys=realloc(defKeys,defKeys_len+6);
|
bool seen=false;
|
||||||
memcpy(defKeys+defKeys_len,t.sectors[i].KeyA,6);
|
for (int k=0;k<defKeys_len;k+=6) {
|
||||||
defKeys_len+=6;
|
if (memcmp(defKeys+k,t.sectors[i].KeyA,6)==0) {
|
||||||
|
seen=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!seen) {
|
||||||
|
defKeys=realloc(defKeys,defKeys_len+6);
|
||||||
|
memcpy(defKeys+defKeys_len,t.sectors[i].KeyA,6);
|
||||||
|
defKeys_len+=6;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (t.sectors[i].foundKeyB) {
|
if (t.sectors[i].foundKeyB) {
|
||||||
defKeys=realloc(defKeys,defKeys_len+6);
|
bool seen=false;
|
||||||
memcpy(defKeys+defKeys_len,t.sectors[i].KeyB,6);
|
for (int k=0;k<defKeys_len;k+=6) {
|
||||||
defKeys_len+=6;
|
if (memcmp(defKeys+k,t.sectors[i].KeyB,6)==0) {
|
||||||
|
seen=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!seen) {
|
||||||
|
defKeys=realloc(defKeys,defKeys_len+6);
|
||||||
|
memcpy(defKeys+defKeys_len,t.sectors[i].KeyB,6);
|
||||||
|
defKeys_len+=6;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user