def internalblue_cli(): print_banner() internalblue = core.InternalBlue() # Restore readline history: if os.path.exists(HISTFILE): readline_history = read(HISTFILE) term.readline.history = readline_history.split('\n') # Readline Completions cmd_keywords = [] for cmd in cmds.getCmdList(): for keyword in cmd.keywords: cmd_keywords.append(keyword) readline_completer = term.completer.LongestPrefixCompleter(words=cmd_keywords) term.readline.set_completer(readline_completer) # setup sockets if not internalblue.connect(): log.critical("No connection to target device.") exit(-1) # Enter command loop (runs until user quits) commandLoop(internalblue) # shutdown connection internalblue.shutdown() # Save readline history: f = open(HISTFILE, "w") f.write("\n".join(term.readline.history)) f.close() # Cleanup log.info("Goodbye")
def internalblue_cli(): print_banner() data_directory = os.path.expanduser("~") + "/.internalblue" if not os.path.exists(data_directory): os.mkdir(data_directory) # Readline Completions cmd_keywords = [] for cmd in cmds.getCmdList(): for keyword in cmd.keywords: cmd_keywords.append(keyword) readline_completer = term.completer.LongestPrefixCompleter( words=cmd_keywords) term.readline.set_completer(readline_completer) # Initalize cores and get devices connection_methods = [ ADBCore(data_directory=data_directory), HTCore(data_directory=data_directory) ] devices = [] for connection_method in connection_methods: devices.extend(connection_method.device_list()) if len(devices) > 0: if len(devices) == 1: device = devices[0] else: i = options('Please specify device:', [d[2] for d in devices], 0) device = devices[i] # Setup device reference = device[0] reference.interface = device[1] # Restore readline history: if os.path.exists(reference.data_directory + "/" + HISTFILE): readline_history = read(reference.data_directory + "/" + HISTFILE) term.readline.history = readline_history.split('\n') # Connect to device if not reference.connect(): log.critical("No connection to target device.") exit(-1) # Enter command loop (runs until user quits) commandLoop(reference) # shutdown connection reference.shutdown() # Save readline history: f = open(reference.data_directory + "/" + HISTFILE, "w") f.write("\n".join(term.readline.history)) f.close() # Cleanup log.info("Goodbye")
def internalblue_cli(): print_banner() parser = argparse.ArgumentParser() parser.add_argument("--data-directory", "-d", help="Set data directory. Default: ~/.internalblue") parser.add_argument("--verbose", "-v", help="Set log level to DEBUG", action="store_true") parser.add_argument( "--ios-device", "-i", help= "Tell internalblue to connect to a remote iPhone HCI socket. Specify socket IP address and port (i.e., 172.20.10.1:1234)." ) parser.add_argument( "--serialsu", "-s", help= "On ADB, directly try su/serial/busybox scripting, if you do not have a special bluetooth.default.so file.", action="store_true") args = parser.parse_args() if args.data_directory is not None: data_directory = args.data_directory else: data_directory = os.path.expanduser("~") + "/.internalblue" if not os.path.exists(data_directory): os.mkdir(data_directory) if args.verbose: log_level = "debug" else: log_level = "info" # Readline Completions cmd_keywords = [] for cmd in cmds.getCmdList(): for keyword in cmd.keywords: cmd_keywords.append(keyword) readline_completer = term.completer.LongestPrefixCompleter( words=cmd_keywords) term.readline.set_completer(readline_completer) # Initalize cores and get devices # As macOS has additional dependencies (objc), only import it here if needed if args.ios_device: from ioscore import iOSCore connection_methods = [ iOSCore(args.ios_device, log_level=log_level, data_directory=data_directory) ] elif platform == "darwin": from macoscore import macOSCore connection_methods = [ macOSCore(log_level=log_level, data_directory=data_directory), ADBCore(log_level=log_level, data_directory=data_directory) ] else: connection_methods = [ ADBCore(log_level=log_level, data_directory=data_directory, serial=args.serialsu), HCICore(log_level=log_level, data_directory=data_directory) ] devices = [] for connection_method in connection_methods: devices.extend(connection_method.device_list()) if len(devices) > 0: if len(devices) == 1: device = devices[0] else: i = options('Please specify device:', [d[2] for d in devices], 0) device = devices[i] # Setup device reference = device[0] reference.interface = device[1] # Restore readline history: if os.path.exists(reference.data_directory + "/" + HISTFILE): readline_history = read(reference.data_directory + "/" + HISTFILE) term.readline.history = readline_history.split('\n') # Connect to device if not reference.connect(): log.critical("No connection to target device.") exit(-1) # Enter command loop (runs until user quits) commandLoop(reference) # shutdown connection reference.shutdown() # Save readline history: f = open(reference.data_directory + "/" + HISTFILE, "w") f.write("\n".join(term.readline.history)) f.close() # Cleanup log.info("Goodbye")