diff --git a/include/dectmon.h b/include/dectmon.h index 802b86b..3c243a3 100644 --- a/include/dectmon.h +++ b/include/dectmon.h @@ -14,6 +14,7 @@ enum { DECTMON_DUMP_NWK = 0x4, }; +extern const char *auth_pin; extern uint32_t dumpopts; struct dect_ops; diff --git a/src/main.c b/src/main.c index 2207b05..d671b25 100644 --- a/src/main.c +++ b/src/main.c @@ -29,13 +29,14 @@ static struct dect_ops ops = { .raw_ops = &raw_ops, }; -#define OPTSTRING "c:m:d:n:h" +#define OPTSTRING "c:m:d:n:p:h" enum { OPT_CLUSTER = 'c', OPT_DUMP_MAC = 'm', OPT_DUMP_DLC = 'd', OPT_DUMP_NWK = 'n', + OPT_AUTH_PIN = 'p', OPT_HELP = 'h', }; @@ -44,6 +45,7 @@ static const struct option dectmon_opts[] = { { .name = "dump-mac", .has_arg = true, .flag = 0, .val = OPT_DUMP_MAC, }, { .name = "dump-dlc", .has_arg = true, .flag = 0, .val = OPT_DUMP_DLC, }, { .name = "dump-nwk", .has_arg = true, .flag = 0, .val = OPT_DUMP_NWK, }, + { .name = "auth-pin", .has_arg = true, .flag = 0, .val = OPT_AUTH_PIN, }, { .name = "help", .has_arg = false, .flag = 0, .val = OPT_HELP, }, { }, }; @@ -60,6 +62,7 @@ static uint32_t opt_yesno(const char *arg, uint32_t opts, uint32_t flag) return opts; } +const char *auth_pin = "0000"; uint32_t dumpopts = DECTMON_DUMP_NWK; int main(int argc, char **argv) @@ -86,6 +89,9 @@ int main(int argc, char **argv) case OPT_DUMP_NWK: dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK); break; + case OPT_AUTH_PIN: + auth_pin = optarg; + break; case OPT_HELP: printf("%s [ options ]\n" "\n" @@ -93,6 +99,7 @@ int main(int argc, char **argv) " -m/--dump-mac=yes/no\n" " -d/--dump-dlc=yes/no\n" " -n/--dump-nwk=yes/no\n" + " -p/--auth-pin=PIN\n" " -h/--help\n", argv[0]); diff --git a/src/nwk.c b/src/nwk.c index 7e78bf5..4c307d6 100644 --- a/src/nwk.c +++ b/src/nwk.c @@ -158,8 +158,6 @@ static struct dect_pt *dect_pt_init(struct dect_ie_portable_identity *portable_i list_add_tail(&pt->list, &dect_pt_list); dect_pt_read_uak(pt); - printf("new PT\n"); - return pt; } @@ -169,8 +167,8 @@ static void dect_pt_track_key_allocation(struct dect_pt *pt, uint8_t msgtype, { uint8_t k[DECT_AUTH_KEY_LEN], ks[DECT_AUTH_KEY_LEN]; uint8_t dck[DECT_CIPHER_KEY_LEN]; + uint8_t ac[DECT_AUTH_CODE_LEN]; uint32_t res1; - uint8_t ac[4]; switch (msgtype) { case DECT_MM_KEY_ALLOCATE: @@ -209,7 +207,7 @@ static void dect_pt_track_key_allocation(struct dect_pt *pt, uint8_t msgtype, pt->res == NULL) return; - dect_pin_to_ac("0000", ac, sizeof(ac)); + dect_pin_to_ac(auth_pin, ac, sizeof(ac)); dect_auth_b1(ac, sizeof(ac), k); dect_auth_a11(k, pt->rs->value, ks);