示例#1
0
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")
示例#2
0
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")
示例#3
0
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")