-K : Don't use the default keys.
This commit is contained in:
parent
48156f9bf0
commit
e183b307d6
0
configure.ac
Normal file → Executable file
0
configure.ac
Normal file → Executable file
23
src/mfoc.c
23
src/mfoc.c
@ -82,6 +82,7 @@ int main(int argc, char *const argv[])
|
||||
// Next default key specified as option (-k)
|
||||
uint8_t *defKeys = NULL, *p;
|
||||
size_t defKeys_len = 0;
|
||||
bool useDefaultKey = true;
|
||||
|
||||
// Array with default Mifare Classic keys
|
||||
uint8_t defaultKeys[][6] = {
|
||||
@ -129,7 +130,7 @@ int main(int argc, char *const argv[])
|
||||
struct slre_cap caps[2];
|
||||
|
||||
// Parse command line arguments
|
||||
while ((ch = getopt(argc, argv, "hD:s:BP:T:S:O:k:t:f:")) != -1) {
|
||||
while ((ch = getopt(argc, argv, "hD:s:BP:T:S:O:k:K:t:f:")) != -1) {
|
||||
switch (ch) {
|
||||
case 'P':
|
||||
// Number of probes
|
||||
@ -191,6 +192,21 @@ int main(int argc, char *const argv[])
|
||||
fprintf(stdout, "The custom key 0x%012llx has been added to the default keys\n", bytes_to_num(defKeys + defKeys_len, 6));
|
||||
defKeys_len = defKeys_len + 6;
|
||||
|
||||
break;
|
||||
case 'K' :
|
||||
// Add this key to the default keys
|
||||
p = realloc(defKeys, defKeys_len + 6);
|
||||
if (!p) {
|
||||
ERR("Cannot allocate memory for defKeys");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
defKeys = p;
|
||||
memset(defKeys + defKeys_len, 0, 6);
|
||||
num_to_bytes(strtoll(optarg, NULL, 16), 6, defKeys + defKeys_len);
|
||||
fprintf(stdout, "The custom key 0x%012llx has been added to the default keys\n", bytes_to_num(defKeys + defKeys_len, 6));
|
||||
defKeys_len = defKeys_len + 6;
|
||||
useDefaultKey = false;
|
||||
|
||||
break;
|
||||
case 'O':
|
||||
// File output
|
||||
@ -324,6 +340,11 @@ int main(int argc, char *const argv[])
|
||||
memcpy(mp.mpa.abtAuthUid, t.nt.nti.nai.abtUid + t.nt.nti.nai.szUidLen - 4, sizeof(mp.mpa.abtAuthUid));
|
||||
// Iterate over all keys (n = number of keys)
|
||||
n = sizeof(defaultKeys) / sizeof(defaultKeys[0]);
|
||||
|
||||
if (!useDefaultKey) {
|
||||
n -= 13;
|
||||
}
|
||||
|
||||
size_t defKey_bytes_todo = defKeys_len;
|
||||
key = 0;
|
||||
while (key < n || defKey_bytes_todo) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user