dpt-tools/python_api/dpt-tools.py

92 lines
2.2 KiB
Python

#!/usr/bin/python3
# builtins
import argparse
# lib
from libDPT import DPT
from libDPT import update_firmware
from libDPT import obtain_diagnosis_access
def print_info():
print("""Thanks for using DPT Tools.
Type `help` to show this message.
Supported commands:
fw -- update firmware
root (thanks to shankerzhiwu and his/her anoymous friend) -- obtain root access
""")
def interactive(dpt):
'''
interactive shell to run commands
'''
firstTime = True
while(1):
if firstTime:
print_info()
firstTime = False
try:
cmd = input(">>> ")
cmd = cmd.lower() # convert to lower case
except KeyboardInterrupt:
print()
dpt.info_print("Exiting... Thanks for using...")
break
except BaseException as e:
print()
dpt.err_print(str(e))
if cmd == 'root':
obtain_diagnosis_access(dpt)
elif cmd == 'exit' or cmd == 'quit':
dpt.info_print("Exiting... Thanks for using...")
break
elif cmd == 'fw':
update_firmware(dpt)
def main():
'''
main func to initalize dpt object
'''
p = argparse.ArgumentParser(
description="DPT Tools")
p.add_argument(
'--client-id', '-id',
dest="dpt_id",
help="File containing the device's client id",
required=True)
p.add_argument(
'--key', '-k',
dest="dpt_key",
help="File containing the device's private key",
required=True)
p.add_argument(
'--addr', '-ip',
dest="dpt_addr",
default=None,
help="Hostname or IP address of the device")
p.add_argument(
'--debug', '-d',
action='store_true',
help="Run with debugging mode")
try:
args = vars(p.parse_args())
except Exception as e:
print(e)
sys.exit()
dpt = DPT(args.get('apt_addr', None), args.get('debug', False))
if not dpt.authenticate(args.get('dpt_id', ""), args.get('dpt_key', "")):
dpt.err_print("Cannot authenticate. Make sure your id, key, and ip addresses are correct.")
exit(1)
interactive(dpt)
if __name__ == '__main__':
main()