#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Importamos los modulos/librerias necesarias

from core.menu_texto_p import *
import core.funciones_core
from termcolor import colored
from recoinform.modules.funciones_rinfo import *
from recoinform.modules.funciones_meta import *
from recoinform.recoleccion_informacion import *
from vulnera.vulnasearch import *
from ataques.ataquesRedLocal import *
from nessus.uso_nessus import *

##################################################
#                                                #
#  Pentesting Lite                               #
#                                                #
#  Escrito por: Daniel Gonzalez Martines (DGM)   #
#                                                #
##################################################
#
# Parte principal

# Capturamos la version de la aplicacion
define_version = core.funciones_core.get_version()

# Hacemos un bucle para volver al Menu Principal si no se elige una opcion predeterminada por nosotros
while 1:
    try:
        # Llamamos al Banner pasandole la version de la aplicacion.
        show_banner(define_version, '1', 'main')
        # Creamos un objeto de la clase Menu. Le pasamos el texto del fichero mitext.py con las opciones
        muestra_menu_recoleccion = Crear_menu(texto_principal, menu_principal)

        # Caso especial del elemento de lista 99
        print(colored('\n  99) Salir del Script.\n', 'yellow'))

        # Carga del Menu Principal manera Standard (sin nada especial)
        eleccion_menu_prin = input(colored("Elija una opcion: ", 'blue'))

        # Salir de la aplicacion
        if eleccion_menu_prin == 'exit' or eleccion_menu_prin == "99" or eleccion_menu_prin == "quit":
            exit_program()

        # Entramos en el menu de Recoleccion de Informacion
        if eleccion_menu_prin == '1':
            recoleccion_de_informacion()
        # Entramos en el menu de Analisis de Vulnerabilidades
        if eleccion_menu_prin == '2':
            analisis_de_vulnerabilidades()

        # Entramos en el menu de Ataques en red local
        if eleccion_menu_prin == '3':
            ataques_red_local()

        # Entramos en el menu Analisis con Nessus
        if eleccion_menu_prin == '4':
            analisis_con_nessus()

    # Capturamos una interrucion por teclado (Control+C)
    except KeyboardInterrupt:
        print(("\n\nGracias por " + bcolors.RED + "utilizar la herramineta" + bcolors.ENDC +
               " Busca en Red.\n\nSeguimos trabajando en ello.\n"))
        # Salimos del bucle While
        break

    # Capturamos alguna excepcion ocurrida
    except Exception as error:
        print(error)
        print("\n\n[!] Algo fue mal, mostrando error por pantalla: " + str(error))
        input("Pulse INTRO para volver al Menu Principal.")
