linux – banner grabbing no muestra servicios (Python NMAP)

estoy teniendo inconveniente con el banner grabbing ya que no me esta mostrando los servicios asociados al puerto .
Detallo un poco lo que quiero resolver :
Tengo que descubrir las IP de la red en la que se encuentre mi máquina, en
una determinada interfaz
Una vez haya encontrado las IP, debe mostrar los puertos que tiene abiertos, tanto para TCP como para UDP, y junto al puerto, debe indicar el banner del servicio.

mi codigo es el siguiente


def scan(self):

        respuesta = ''

        # Iniciamos el Escaner de Puertos
        nm = nmap.PortScanner()
        nm.scan('192.168.0.1/24', arguments='-sV -T4')

        # tomamos la lista de hosts
        hosts_list = ((x, nm(x)('status')('state')) for x in nm.all_hosts())
        hosts_ord = ()

        # tomamos solo los que están 'up'
        for host, status in hosts_list:
            if status in 'up':
                hosts_ord.append(host)

        # Los ordenamos con sorted, struct e inet_aton
        hosts_ord = sorted(hosts_ord, key=lambda ip: struct.unpack("!L", inet_aton(ip))(0))

        # Por cada dispositivo encontrado:
        for h in hosts_ord:
            self.jsondata(h) = nm(h)
            print('IP {}'.format(h)) # Nombramos al dispositivo
            respuesta = '{}nIP {}'.format(respuesta, h)
            print('=======================')
            respuesta = '{}n======================='.format(respuesta)
            host_msg = '{}: '.format(h)
            protocolos = ('tcp','udp') # Por cada protocolo que queremos filtrar
            for proto in protocolos:
                try:
                    print('t{}:'.format(proto.upper()))
                    if nm(h)(proto):
                        respuesta = '{}nt{}'.format(respuesta,proto.upper())
                        puertos_cont = 0
                        for port in nm(h)(proto).keys():
                            if nm(h)(proto)(port)('state') == "open": # Si está abierto
                                puertos_cont += 1
                                puertos='{}: '.format(port)
                                #print(puertos)
                                banner = self.obtenerBanner(h,port) # Captura del Banner
                                if banner == '' or 'None' in banner or banner == None: # Si no devuelve banner
                                    banner = '-'
                                print('tt{}:t{}'.format(port, banner))
                                respuesta = '{}ntt{}:t{}'.format(respuesta, port, banner)
                        if puertos_cont == 0:
                            print('ttSin puertos abiertos')
                            respuesta = '{}nttSin puertos abiertos'.format(respuesta)
                        print('nn')
                except:
                    pass
            print('--------------------------------')
            respuesta = '{}n--------------------------------'.format(respuesta)
        return(respuesta)


    def obtenerBanner(self, ip_address, puerto):
        # Capturamos el Banner
        try:
            conexion=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            #conexion.settimeout(2)
            conexion.connect((ip_address,puerto))
            banner = conexion.recv(1024)
            conexion.close()
            return str(banner.decode('utf-8').rstrip('n')) # Devolvemos decodificada para evitar b'' como string y quitamos el salto de línea posible
            
            
            
        except Exception as e:
             print (">>> Error de escaneo:", e)

  

el resultado esperado es

Resultado esperado

Mi resultado es el siguiente

introducir la descripción de la imagen aquí