mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-28 17:32:35 +00:00
60 lines
1.2 KiB
Perl
Executable File
60 lines
1.2 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
##
|
|
## Calculated EAP-AKA AUTN based on:
|
|
## AUTN = (SQN xor AK) || AMF || MAC = 48 + 16 + 64 = 128 bits
|
|
##
|
|
use strict;
|
|
use warnings;
|
|
use diagnostics;
|
|
use Carp;
|
|
$SIG{__DIE__} = sub{Carp::confess(@_)};
|
|
use Getopt::Long;
|
|
$| = 1;
|
|
|
|
our $usage = qq($0: calculate AUTN
|
|
All input is in ascii hex.
|
|
--sqn SQN
|
|
--ak AK, output of f5
|
|
--amf AMF for test-set configuration
|
|
--mac MAC, output of f1
|
|
|
|
Example for test-set 19 (4.3.19) from 3GPP TS 35.208, v6.0.0 Release 6
|
|
$0 --sqn 16f3b3f70fc2 --ak ada15aeb7bb8 --amf c3ab --mac 2a5c23d15ee351d5
|
|
);
|
|
|
|
|
|
our $sqn = "";
|
|
our $ak = "";
|
|
our $amf = "";
|
|
our $mac = "";
|
|
|
|
GetOptions (
|
|
'sqn=s' => \$::sqn,
|
|
'ak=s' => \$::ak,
|
|
'amf=s' => \$::amf,
|
|
'mac=s' => \$::mac,
|
|
) || die("$::usage");
|
|
|
|
#AUTN = (SQN xor AK) || AMF || MAC = 48 + 16 + 64 = 128 bits
|
|
print "AUTN for SQN: $sqn AK: $ak AMF: $amf MAC: $mac\n";
|
|
my $i;
|
|
my @sqnc = split("", $sqn);
|
|
my @akc = split("", $ak);
|
|
if (@sqnc != 12) {
|
|
die("sqn must have 12 ascii bytes.");
|
|
}
|
|
if (@akc != 12) {
|
|
die("akc must have 12 ascii bytes.");
|
|
}
|
|
|
|
for ($i = 0; $i<12; $i++) {
|
|
my $v = hex($sqnc[$i]);
|
|
$v ^= hex($akc[$i]);
|
|
printf "%1x", $v;
|
|
}
|
|
print $amf;
|
|
print $mac;
|
|
print "\n";
|
|
|
|
## eof
|