Advertisement
Guest User

Untitled

a guest
Feb 28th, 2019
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import argparse
  3. import configparser
  4. import os
  5. import pyotp
  6.  
  7.  
  8. def create_config(account_name):
  9.     config = configparser.ConfigParser()
  10.     config.add_section(account_name)
  11.     otp_token = raw_input('Enter OTP Token: ')
  12.     config.set(account_name, 'otp_token', otp_token)
  13.     mode = 'ab'
  14.     if not os.path.exists(os.path.expanduser('~/.otp.conf')):
  15.       mode = 'wb'
  16.     with open(os.path.expanduser('~/.otp.conf'), mode) as configfile:
  17.       config.write(configfile)
  18.     return True
  19.  
  20.  
  21. def onetimepass(token):
  22.     return pyotp.TOTP(token).now()
  23.  
  24.  
  25. def get_otp(config_path='~/.otp.conf', service=None):
  26.     config = configparser.ConfigParser()
  27.     config.read([os.path.expanduser(config_path)])
  28.     token = config.get(service, 'otp_token')
  29.     otp = onetimepass(token)
  30.     return otp
  31.  
  32. if __name__ == "__main__":
  33.     parser = argparse.ArgumentParser(
  34.         description='OTP Generator'
  35.     )
  36.  
  37.     parser.add_argument(
  38.         '--add', '-a',
  39.         required=False,
  40.         #action='store_true',
  41.         help='--add -a: Add otp account',
  42.         dest='add',
  43.     )
  44.  
  45.     parser.add_argument(
  46.         '--service', '-s',
  47.         required=False,
  48.         help='--service -s: Service',
  49.         dest='service',
  50.     )
  51.     args = vars(parser.parse_args())
  52.     if args['add']:
  53.         print(create_config(account_name=args['add']))
  54.     else:
  55.         service = args['service']
  56.         if not service:
  57.             print('No service specified. Exiting.')
  58.             exit(1)
  59.         print(get_otp(service=args['service']))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement