]> git.llucax.com Git - software/wpe.git/blob - rotate-key
82ab5a941bdab58396e80b2f9fc4725dc1120e82
[software/wpe.git] / rotate-key
1 #!/bin/sh
2
3 # Must edit
4 ###########
5 # Wireless interface
6 IFACE="wlan0"
7 # Base key used to compute the actual key
8 KEY_BASE="My WEP is better than yours"
9 # Security mode (open/restricted)
10 SECURITY_MODE="open"
11 # Comment this if you don't want to rotate the channel
12 ROTATE_CHANNEL="on"
13 # Channels supported by the wireless interface
14 MAX_CHANNEL=11
15 # Uncomment if you want the script to work only if you're on a specific essid
16 #ESSID="myessid"
17 # Uncomment if your wireless interface need the commit command
18 #COMMIT="commit"
19
20 # May edit
21 ##########
22 # The format has to be in date(1) format, and probably has to have a relation
23 # with the frequency the script is executed. The default value is useful for a
24 # 1/2 day frequency (rotation every 12 hs). date(1) is executed with C locale so
25 # %p can be used.
26 # A good crontab line for this is:
27 # 0 0,12 * * * /path/to/script
28 KEY_FORMAT="$KEY_BASE%D%p"
29 # Key size, 1-5 for 64bit encryption, 6-13 for 128bit encryption
30 KEY_SIZE=13
31 # Hash command/algorithm used to compute the actual key
32 HASH_PROG="sha1sum"
33
34 # Do not touch
35 ##############
36 # Unless you know what you're doing, and in that case, send me the patch ;)
37
38 export LANG=C
39
40 # Check if they are using our essid
41 if [ -n "$ESSID" ]
42 then
43   curr_essid=`iwconfig $IFACE | grep ESSID | sed 's/.*ESSID:"\([^"]\+\)".*/\1/'`
44   if [ "$curr_essid" != "$ESSID" ]
45   then
46     exit 0
47   fi
48 fi
49
50 # Compute the new key
51 str=`date +"$KEY_FORMAT"`
52 size=$(($KEY_SIZE * 2))
53 key=`echo "$str" | $HASH_PROG | cut -c-$size`
54
55 # Compute the new channel
56 if [ -n "$ROTATE_CHANNEL" ]
57 then
58   chan=`echo $key | tr abcdef 847502 | cut -c-6`
59   chan=$(($chan % $MAX_CHANNEL + 1))
60   channel="channel $chan"
61 fi
62
63 # Commit changes
64 /sbin/iwconfig $IFACE key $SECURITY_MODE $key $channel $COMMIT
65
66 # vim: set et sw=2 sts=2 :