5 from binascii
import hexlify
9 def mkconmap_wifi(ssid
):
12 'id': '_cnm_handcrafted_',
13 'uuid': str(uuid
.uuid1()), # new in oS 11.1
14 'type': '802-11-wireless',
17 'ssid': dbus
.ByteArray(ssid
),
18 'mode': 'infrastructure',
22 def _elongate(s
, tlen
):
23 "repeat string s to target length tlen"
26 copies_needed
= int(math
.ceil(tlen
/ float(len(s
))))
27 return (s
* copies_needed
)[:tlen
]
29 # http://www.mail-archive.com/networkmanager-list@gnome.org/msg07935.html
30 def _wep_passphrase_to_hash(p
):
31 return hashlib
.md5(_elongate(p
, 64)).hexdigest()
33 def mkconmap_wep_pass(ssid
, key
):
34 cm
= mkconmap_wifi(ssid
)
35 cm
["802-11-wireless"]["security"] = "802-11-wireless-security"
36 cm
["802-11-wireless-security"] = {}
37 cm
["802-11-wireless-security"]["key-mgmt"] = "none"
38 cm
["802-11-wireless-security"]["wep-tx-keyidx"] = 0
39 cm
["802-11-wireless-security"]["wep-key0"] = _wep_passphrase_to_hash(key
)
42 def mkconmap_wep(ssid
, key
):
43 cm
= mkconmap_wifi(ssid
)
44 cm
["802-11-wireless"]["security"] = "802-11-wireless-security"
45 cm
["802-11-wireless-security"] = {}
46 cm
["802-11-wireless-security"]["key-mgmt"] = "none"
47 cm
["802-11-wireless-security"]["wep-tx-keyidx"] = 0
48 cm
["802-11-wireless-security"]["wep-key0"] = key
51 def mkconmap_psk(ssid
, key
):
52 cm
= mkconmap_wifi(ssid
)
53 cm
["802-11-wireless"]["security"] = "802-11-wireless-security"
54 cm
["802-11-wireless-security"] = {}
55 cm
["802-11-wireless-security"]["key-mgmt"] = "wpa-psk"
56 cm
["802-11-wireless-security"]["psk"] = hexlify(pbkdf2
.pbkdf2(key
, ssid
, 4096, 32))
57 cm
["802-11-wireless-security"]["group"] = ["tkip", "ccmp"]
58 cm
["802-11-wireless-security"]["pairwise"] = ["tkip", "ccmp"]