import sys import xml.etree.ElementTree as ET from pathlib import Path key = 0x26 def extract_web_interface_creds(tree: ET) -> str: x_gc_login = tree.find('.//X_GC_LOGIIN') result = [] for account in x_gc_login: level = account.find('UserLevel').text username = account.find('Username').text password = account.find('Passwd').text result.append(f'{level}-level account:\nusername: {username}\npassword: {password}') return '\n\n'.join(result) def extract_shell_access_creds(tree: ET) -> str: telnet = tree.find('.//RemoteManagement/TELNET') ssh = tree.find('.//RemoteManagement/SSH') telnet_username = telnet.find('TelnetUserName').text telnet_password = telnet.find('TelnetPassword').text ssh_username = ssh.find('UserName').text ssh_password = ssh.find('Password').text if (telnet_username == ssh_username) and (telnet_password == ssh_password): return f'Shell credentials (Telnet and SSH):\nusername: {ssh_username}\npassword: {ssh_password}' else: return f'''Shell credentials: Telnet: username: {telnet_username} password: {telnet_password} SSH: username: {ssh_username} password: {ssh_password}''' try: config_filename = Path(sys.argv[1]) except IndexError: print(f'Usage: {sys.argv[0]} ', file=sys.stderr) sys.exit(1) with open(config_filename, 'rb') as infile: test_chunk = infile.read(7) infile.seek(0) if test_chunk.startswith(b'