/usr/bin/tos-mote-key is in tinyos-tools 1.4.2-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #!/usr/bin/perl
# Copyright (c) 2000-2002 The Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the
# distribution.
# - Neither the name of the copyright holders nor the names of
# its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Naveen Sastry
# Date: 11/11/02
#
#
# Script to manage the tinysec keyfile
# default keyfile and default key name (\w+ matches first valid key)
$KEYFILE=".keyfile";
$KEYNAME="\\w+";
# if no keyfile is found, we'll need to create it and populate it with data
# from /dev/random. This function returns the text taht should go into the
# new keyfile. We store the key in a hex-form.
sub generateKey {
print STDERR "Generating default TinySec Key...\n";
$a = "\n# TinySec Keyfile. By default, the first key will be used.\n";
$a = $a . "# You can import other keys by appending them to the file.\n";
$a = $a . "\ndefault ";
open RND, "</dev/urandom" or open "</dev/urandom" or
die("Couldn't open random file.");
read RND, $r, 16;
@chars = split //, $r;
while (@chars) {
$a = $a . sprintf("%02lX", (ord shift @chars));
}
return $a;
};
# Returns the binary version of the key (passed as the first arg)
sub recoverKey {
$s = "";
@chars = split /(..)/g, shift(@_);
while (@chars) {
$a = hex shift @chars;
if ($a != 0 ) {
$s = $s . chr ($a);
}
}
return $s;
}
# Returns a text version of the key (passed as the key) suitable for use in c
# programs (ie returns "0x32,0xAB, ..." when given 32AB...)
sub splitKey {
$s = "";
$delim = "";
@chars = split /(..)/g, shift(@_);
while (@chars) {
$a = shift @chars;
if (! $a eq "" ) {
$s = $s . $delim . "0x" . $a ;
$delim = ",";
}
}
return $s;
}
# prints the usage string and exits
sub usage {
print "usage: TinySecKey [-kf keyfile] [-kn keyname]\n";
print " where \n";
print " [-kf keyfile] specifies an optional keyfile (default /home/$USER/.keyfile)\n";
print " [-kn keyname] specifies an optional keyname (default uses first) \n";
exit 1;
}
# parse the args
while ($_ = $ARGV[0], /^-/) {
shift;
if (/^-kf/) { $KEYFILE = $ARGV[0]; shift; next; }
if (/^-kn/) { $KEYNAME = $ARGV[0] ; shift; next; }
usage();
}
# open the keyfile. if new, generate key data and reposition file pointer
open KEYFILE, '+<', $KEYFILE or
(open KEYFILE, '+>', $KEYFILE and print KEYFILE generateKey() and
seek KEYFILE, 0, 0) or
die ("couldn't open file " . $KEYFILE);
# find the matching key and print.
while ( <KEYFILE> ) {
if ($_ =~ /^$KEYNAME\s+([a-fA-F0-9]+)/) {
$KEY = $1;
last;
}
}
print splitKey($KEY) . "\n";
|