45 lines
986 B
Text
45 lines
986 B
Text
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from pbkdf2 import PBKDF2
|
||
|
import sys
|
||
|
|
||
|
|
||
|
def get_ssid(netctl_file):
|
||
|
for line in netctl_file:
|
||
|
if line.startswith('ESSID='):
|
||
|
return line.split('=')[1].strip("\"'")
|
||
|
|
||
|
raise Exception("No ESSID assignment found")
|
||
|
|
||
|
|
||
|
def replace_key(netctl_file, ssid):
|
||
|
netctl_out = []
|
||
|
|
||
|
for line in netctl_file:
|
||
|
if line.startswith('Key='):
|
||
|
passphrase = line.split('=')[1].strip("\"'")
|
||
|
key = PBKDF2(passphrase, ssid, iterations=4096).hexread(32)
|
||
|
netctl_out.append('Key=\\"{}'.format(key))
|
||
|
else:
|
||
|
netctl_out.append(line)
|
||
|
|
||
|
return netctl_out
|
||
|
|
||
|
|
||
|
def main(args):
|
||
|
netctl_file = []
|
||
|
|
||
|
with open(args[1], 'r') as f:
|
||
|
netctl_file = f.read().split('\n')
|
||
|
|
||
|
ssid = get_ssid(netctl_file)
|
||
|
netctl_file = replace_key(netctl_file, ssid)
|
||
|
|
||
|
with open(args[1], 'w+') as f:
|
||
|
f.write('\n'.join(netctl_file))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main(sys.argv)
|