dect
/
dectmon
Archived
13
0
Fork 0

auth: allow specifying PIN on commandline (-p/--auth-pin)

Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
Patrick McHardy 2010-11-13 18:31:36 +01:00
parent ede151676c
commit 79004e4687
3 changed files with 11 additions and 5 deletions

View File

@ -14,6 +14,7 @@ enum {
DECTMON_DUMP_NWK = 0x4, DECTMON_DUMP_NWK = 0x4,
}; };
extern const char *auth_pin;
extern uint32_t dumpopts; extern uint32_t dumpopts;
struct dect_ops; struct dect_ops;

View File

@ -29,13 +29,14 @@ static struct dect_ops ops = {
.raw_ops = &raw_ops, .raw_ops = &raw_ops,
}; };
#define OPTSTRING "c:m:d:n:h" #define OPTSTRING "c:m:d:n:p:h"
enum { enum {
OPT_CLUSTER = 'c', OPT_CLUSTER = 'c',
OPT_DUMP_MAC = 'm', OPT_DUMP_MAC = 'm',
OPT_DUMP_DLC = 'd', OPT_DUMP_DLC = 'd',
OPT_DUMP_NWK = 'n', OPT_DUMP_NWK = 'n',
OPT_AUTH_PIN = 'p',
OPT_HELP = 'h', 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-mac", .has_arg = true, .flag = 0, .val = OPT_DUMP_MAC, },
{ .name = "dump-dlc", .has_arg = true, .flag = 0, .val = OPT_DUMP_DLC, }, { .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 = "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, }, { .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; return opts;
} }
const char *auth_pin = "0000";
uint32_t dumpopts = DECTMON_DUMP_NWK; uint32_t dumpopts = DECTMON_DUMP_NWK;
int main(int argc, char **argv) int main(int argc, char **argv)
@ -86,6 +89,9 @@ int main(int argc, char **argv)
case OPT_DUMP_NWK: case OPT_DUMP_NWK:
dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK); dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK);
break; break;
case OPT_AUTH_PIN:
auth_pin = optarg;
break;
case OPT_HELP: case OPT_HELP:
printf("%s [ options ]\n" printf("%s [ options ]\n"
"\n" "\n"
@ -93,6 +99,7 @@ int main(int argc, char **argv)
" -m/--dump-mac=yes/no\n" " -m/--dump-mac=yes/no\n"
" -d/--dump-dlc=yes/no\n" " -d/--dump-dlc=yes/no\n"
" -n/--dump-nwk=yes/no\n" " -n/--dump-nwk=yes/no\n"
" -p/--auth-pin=PIN\n"
" -h/--help\n", " -h/--help\n",
argv[0]); argv[0]);

View File

@ -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); list_add_tail(&pt->list, &dect_pt_list);
dect_pt_read_uak(pt); dect_pt_read_uak(pt);
printf("new PT\n");
return pt; 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 k[DECT_AUTH_KEY_LEN], ks[DECT_AUTH_KEY_LEN];
uint8_t dck[DECT_CIPHER_KEY_LEN]; uint8_t dck[DECT_CIPHER_KEY_LEN];
uint8_t ac[DECT_AUTH_CODE_LEN];
uint32_t res1; uint32_t res1;
uint8_t ac[4];
switch (msgtype) { switch (msgtype) {
case DECT_MM_KEY_ALLOCATE: 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) pt->res == NULL)
return; 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_b1(ac, sizeof(ac), k);
dect_auth_a11(k, pt->rs->value, ks); dect_auth_a11(k, pt->rs->value, ks);