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

        interface = Interface()
        tcpHelper = TCPHelper()

        # Dirección IP local donde llegarán los paquetes
        localIpAddress = interface.getSourceAddress()

        # Rango de puertos a revisar
        for port in range(1, 65535):
            # Envía un paquete syn a modo de señuelo mientras que el hilo de
            # proceso del socket a escucha está listo para recibir las
            # respuestas.
            try:
                tcpHelper.sendSyn(sourceIp=localIpAddress,
                                  toAddress=address,
                                  dstPort=port)
            except Exception as e:
                # Ok, puede suceder, es normal.
                # Por alguna extraña razón el socket en cierto punto arroja un
                # acceso denegado indicando que no tengo permisos para la
                # operación a pesar de tener privilegios elevados, pero de todas
                # maneras el paquete se envía sin problemas.
                pass
Esempio n. 2
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. 3
0
def run_server(langbuf, param):
    h = Helper()
    c = param.split(':')
    ip = '127.0.0.1'
    port = 3000
    debug = 'on'
    if len(c):
        for v in c:
            if h.ip_validate(v) is not None:
                ip = v
            elif h.port_validate(v) is not None:
                port = v
            else:
                if v in ['on', 'off']:
                    debug = v
    http = HttpServer(ip, port, debug)
    http.start()
Esempio n. 4
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