Ejemplo n.º 1
0
def _gdbserver_port(gdbserver, ssh):
    which = _get_which(ssh)

    # Process /bin/bash created; pid = 14366
    # Listening on port 34816
    process_created = gdbserver.recvline()
    gdbserver.pid = int(process_created.split()[-1], 0)

    listening_on = ''
    while 'Listening' not in listening_on:
        listening_on = gdbserver.recvline()

    port = int(listening_on.split()[-1])

    # Set up port forarding for SSH
    if ssh:
        remote = ssh.connect_remote('127.0.0.1', port)
        listener = tubes.listen.listen(0)
        port = listener.lport

        # Disable showing GDB traffic when debugging verbosity is increased
        remote.level = 'error'
        listener.level = 'error'

        # Hook them up
        remote <> listener

    # Set up port forwarding for ADB
    elif context.os == 'android':
        adb.forward(port)

    return port
Ejemplo n.º 2
0
def _gdbserver_port(gdbserver, ssh):
    which = _get_which(ssh)

    # Process /bin/bash created; pid = 14366
    # Listening on port 34816
    process_created = gdbserver.recvline()
    gdbserver.pid   = int(process_created.split()[-1], 0)

    listening_on = ''
    while 'Listening' not in listening_on:
        listening_on    = gdbserver.recvline()

    port = int(listening_on.split()[-1])

    # Set up port forarding for SSH
    if ssh:
        remote   = ssh.connect_remote('127.0.0.1', port)
        listener = tubes.listen.listen(0)
        port     = listener.lport

        # Disable showing GDB traffic when debugging verbosity is increased
        remote.level = 'error'
        listener.level = 'error'

        # Hook them up
        remote <> listener

    # Set up port forwarding for ADB
    elif context.os == 'android':
        adb.forward(port)

    return port
Ejemplo n.º 3
0
def _gdbserver_port(gdbserver, ssh):
    which = _get_which(ssh)

    # Process /bin/bash created; pid = 14366
    # Listening on port 34816
    process_created = gdbserver.recvline()

    if process_created.startswith(b'ERROR:'):
        raise ValueError(
            'Failed to spawn process under gdbserver. gdbserver error message: %s'
            % process_created)

    try:
        gdbserver.pid = int(process_created.split()[-1], 0)
    except ValueError:
        log.error('gdbserver did not output its pid (maybe chmod +x?): %s',
                  six.ensure_str(process_created))

    listening_on = b''
    while b'Listening' not in listening_on:
        listening_on = gdbserver.recvline()

    port = int(listening_on.split()[-1])

    # Set up port forarding for SSH
    if ssh:
        remote = ssh.connect_remote('127.0.0.1', port)
        listener = tubes.listen.listen(0)
        port = listener.lport

        # Disable showing GDB traffic when debugging verbosity is increased
        remote.level = 'error'
        listener.level = 'error'

        # Hook them up
        remote.connect_both(listener)

    # Set up port forwarding for ADB
    elif context.os == 'android':
        adb.forward(port)

    return port