Esempio n. 1
0
    def findHttpServices(self, address):

        h = Helper()

        if ((h.ip_validate(address) is None)
                and (h.hostname_validate(address) is None)):
            return {}

        th = []

        for tn in range(1, 100):
            t = threading.Thread(target=self.check,
                                 kwargs={'address': address})
            t.setDaemon(True)
            th.append(t)

        for t in th:
            t.start()
            t.join()

        result = {
            'hostname': address,
            'addresses': h.resolve_dns(address),
            'webservices': self.webservices
        }

        return result
Esempio n. 2
0
    def filter(self, address):
        h = Helper()
        # Direcciones IP que se está buscando actualmente, para recibir desde el
        # sniffer.
        self.remoteIpAddressStack = h.resolve_dns(address)

        # Corre el sniffer en busca de los paquetes de respuesta de puertos
        threadHandler = threading.Thread(target=self.sniffer)

        # Previene la impresión de mensajes de error al final del hilo
        # principal cuando se cancela el progreso con Conrol+C.
        threadHandler.setDaemon(True)

        # Ejecuta el hilo de proceso
        threadHandler.start()

        for ip in self.remoteIpAddressStack:

            # Realiza la búsqueda de puertos
            self.findPorts(address)

            # Iteración cada x segundos
            time.sleep(10)

        self.canContinue = False
        self.socketHandlerBind.close()

        # Espera a que finalice el hilo de proceso del sniffer.
        threadHandler.join()

        return self.result
Esempio n. 3
0
    def findPorts(self, ipaddress):
        h = Helper()
        # Omite los rangos locales
        # TODO: Puede ser requerido para pentesting.
        if h.ip_validate(ipaddress) is not None:
            if (IP(ipaddress).iptype() in ['PRIVATE', 'LOOPBACK']):
                return {'ports': []}

        self.ips = h.resolve_dns(ipaddress)
        response = []

        for ip in self.ips:
            if ip == ipaddress:
                continue
            result = {'record': {'ip': []}}
            self.stack = list(reversed(range(1, 65535)))

            result['record']['ip'] = ip
            result['record']['ports'] = []
            # Punteros de los hilos de proceso
            threadsHandlers = []

            # Linux por defecto soporta 1024 threads a menos que se modifique
            # los límites en /etc/security/limits.conf
            # 500 hilos por defecto
            for threadNumber in range(1, 500):
                # Puntero del hilo de proceso
                threadHandler = threading.Thread(target=self.threadCheck,
                                                 kwargs={'ipaddress': ip})
                # Previene la impresión de mensajes de error al final del hilo
                # principal cuando se cancela el progreso con Conrol+C.
                threadHandler.setDaemon(True)
                # Obtiene el identificador único del hilo de proceso
                threadsHandlers.append(threadHandler)
                # Ejecuta el hilo de proceso
                threadHandler.start()

            for threadHandler in threadsHandlers:
                # Espera a que finalice el hilo de proceso
                threadHandler.join()

            result['record']['ports'] = sorted(self.ports)
            response.append(result)
            self.ports = []

        return response