def ReporteEjecutivo():
    try:
        ReporteFinanciero = pros.GenerarMapeo(dataused)
        data = pros.ConversionDataEjecutiva(ReporteFinanciero)
        pros.GenerarReporteEjecutivo(data)
    except:
        log.error('Error al Generar Reporte Ejecutivo.... Estado NoOK\n')
示例#2
0
 def Ejecut(self):
     if self.pathh == "":
         self.ui.Estado_L.setText("Seleccione una Imagen")
         return
     selMOD = self.ui.Modo.currentText()
     if self.ui.Password.text() == "":
         self.ui.Estado_L.setText("Ingrese una contraseña")
         return
     Password_text = self.ui.Password.text()
     if len(Password_text) != 8:
         self.ui.Estado_L.setText("La contraseña debe ter 8 digitos")
         return
     if selMOD == "Modo_ECB":
         selMOD = DES.MODE_ECB
     elif selMOD == "Modo_CBC":
         selMOD = DES.MODE_CBC
     elif selMOD == "Modo_CFB":
         selMOD = DES.MODE_CFB
     elif selMOD == "Modo_OFB":
         selMOD = DES.MODE_OFB
     if self.ui.Encry.isChecked():
         flag = Pro.Cifrar(Password_text, selMOD, self.pathh)
         if flag:
             self.ui.Estado_L.setText("Cifrado")
         else:
             self.ui.Estado_L.setText("Error al Cifrar")
     elif self.ui.Descry.isChecked():
         flag = Pro.DesCifrar(Password_text, selMOD, self.pathh)
         if flag:
             self.ui.Estado_L.setText("DesCifrado")
         else:
             self.ui.Estado_L.setText("Error al DesCifrar")
     else:
         self.ui.Estado_L.setText("Seleccione una accion")
         return
示例#3
0
    def EjecutarF(self):
        if (self.ui.FirmaradioButton.isChecked()):
            if (self.pathArchivo != "" and self.pathLlave != ""):
                flag = Procesos.FirmaDigital(self.pathArchivo, self.pathLlave)
                if flag:
                    self.ui.EstatusN.setText("Archivo Firmado Correctamente")
                else:
                    self.ui.EstatusN.setText(
                        "Error al firmar el archivo, ingrese la llave Correcta"
                    )
            else:
                self.ui.EstatusN.setText("Seleccione los archivos necesarios")

        elif (self.ui.VerifiradioButton.isChecked()):
            if (self.pathArchivo != "" and self.pathLlave != ""):
                flag = Procesos.Verificacion(self.pathArchivo, self.pathLlave)
                if flag:
                    self.ui.EstatusN.setText("Archivo Verificado")
                else:
                    self.ui.EstatusN.setText(
                        "Error al Verificar, ingrese la llave Correcta")
            else:
                self.ui.EstatusN.setText("Seleccione los archivos necesarios")
        else:
            self.ui.EstatusN.setText("Seleccione una Opcion")
示例#4
0
def matar_proceso(proceso_a_matar):
    try:
        int(proceso_a_matar)
        proceso = buscar_procesos(proceso_a_matar,"PID")
    except:
        proceso = buscar_procesos(proceso_a_matar,"Nombre")
    
    #Verificamos que el proceso que deseamos eliminar exista
    if len(proceso) > 1:
        
        #Mostramos el/procesos que coincidieron con los criterios de busqueda
        print("\nA continuación se muestran los procesos relacionados con {}: \n".format(proceso_a_matar))
        pr.mostrar_procesos_usarios(proceso)
        
        #Confirmamos el PID del proceso a eliminar
        pid = input("\nConfirme el PID del proceso que desea matar: ")
        
        #Obtenemos la lista de los PPID del sistema para confirmar si el proceso es padre o hijo
        lista_procesos = pr.listar_procesos()
        lista_PPID = [proceso[2] for proceso in lista_procesos]
        
        #Extraemos los PID para que el usuario confirme el proceso a eliminar
        lista_pid = [elemento[1] for elemento in proceso[1:]]

        #Si el proceso está en la lista de PID y en lalista de PPID es un proceso padre
        if pid in lista_pid and pid in lista_PPID:
            #Informamos que está a punto de matar un proceso padre
            msg.mostrar_mensaje("El proceso que desea matar es un proceso padre")
            #Solicitamos que confirme si desea matar el proceso
            confirmacion = input("Está seguro que desea matarlo (y/n): ")
            #Si confirma se matan los procesos hijos y posteriormente se mata al padre
            if confirmacion == "y":
                subprocess.check_output("kill {}".format(pid),shell=True)
                subprocess.check_output("pkill -TERM -P {}".format(pid),shell=True)
            #Si deniega se interrumpe la operación
            else:
                msg.mostrar_mensaje("Operación cancelada")    
        
        #Si el proceso está en la lista de pid pero no en la de PPID es un proceso hijo
        elif pid in lista_pid:
            #Informamos que está a punto de matar a un proceso hjo
            msg.mostrar_mensaje("El proceso que desea matar es un proceso hijo")
            #Solicitamos que confirme si desea matar el proceso
            confirmacion = input("Está seguro que desea matar (y/n): ")
            #Si confirma matamos el proceso
            if confirmacion == "y":
                subprocess.check_output("kill {}".format(pid),shell=True)
            #Si deniega se cancela la operación
            else:
                msg.mostrar_mensaje("Operación cancelada")

        #Si el proceso no está en la lista de PID para la confirmación, el usuario ingresó un PID invalido
        else:
            msg.mostrar_mensaje("ERROR: el proceso {} no es una confirmación valida".format(pid))
    
    #Si el proceso no existe devolvemos un mensaje de error
    else:
        msg.mostrar_mensaje("ERROR: el proceso {} no existe".format(proceso_a_matar))
def ModOrigin(path):
    try:
        for data in dataused:
            pros.escritura(data, path)
        log.info('Proceso de Modificacion de archivo ' + path +
                 'completado......Estado OK\n')
        return ('Proceso de Modificacion de archivo ' + path +
                'completado......Estado OK\n')
    except:
        log.error('Proceso de Modificacion de archivo ' + path +
                  ' incompleto......Estado NoOK\n')
        return ('Proceso de Modificacion de archivo ' + path +
                ' incompleto......Estado NoOK\n')
示例#6
0
def lanzar():
    if not flask.request.json or not 'programa' in flask.request.json:
        mensaje = {'Mensaje': Constantes.ingreseDatos}
        return response(mensaje, 404)
    data = Procesos.lanzarProcesos(flask.request.json['programa'])
    mensaje = {'Process': flask.request.json['programa']}
    return response(mensaje, 200)
def listar_usuarios():
    procesos = pr.listar_procesos(True)
    #Creamos una lista con los id de los usuarios
    lista_id = [proceso[3] for proceso in procesos]
    #Buscamos los id unicos
    id_unicos = set(lista_id[1:])

    #Buscamos el nombre de usuario correspondiente a cada id
    usuarios = {}
    for id in id_unicos:
        #Creamos el comando unix para buscar el nombre de usuario
        comando = "getent passwd | awk -F: '$3 ==" + id + " { print $1 }'"
        #Buscamos el nombre de usuario
        usuario = subprocess.check_output(comando, shell=True)
        #Convertimos el nombre de usuario a string
        usuario = str(usuario)
        #Realizamos la limieza del nombre de usuario
        usuario = usuario.replace("b'", "")
        usuario = usuario.replace(r"\n'", "")
        #Guardamos el nombre de usuario en un diccionario
        usuarios[id] = usuario

    lista_usuarios = [[usuarios[usuario_id], usuario_id]
                      for usuario_id in usuarios]
    return lista_usuarios
示例#8
0
def listarProceso(pid):
    data = Procesos.listaProcesos(pid)
    if data == Constantes.noExistePorceso:
        mensaje = {'Mensaje': data, 'PID': pid}
        return response(mensaje, 404)

    return response(data, 200)
def filtrar():

    count = 0
    try:
        for data in dataclear:
            respuesta = pros.validateFilter(data)
            if (respuesta == 1):
                datafilter.append(data)
                count = count + 1
            if (respuesta == 2):
                dataused.append(data)
            if (respuesta == 3):
                log.error("Error Filtrando Data......Proceso no Ok\n" +
                          "Cantidad de Registros filtrados: " + str(count) +
                          '\n')
                return ("Error Filtrando Data......Proceso no Ok\n" +
                        "Cantidad de Registros filtrados: " + str(count) +
                        "\n")
        dataclear.clear()
        log.info("Proceso de Filtrado completo.......Proceso OK\n" +
                 "Cantidad de Registros Filtrados: " + str(count) + '\n')
        TotalRegistrosfiltrados = count
        return ("Proceso de Filtrado completo.......Proceso OK\n" +
                "Cantidad de Registros Filtrados: " + str(count) + '\n')
    except:
        log.error("Error Filtrando Data......Proceso no Ok\n" +
                  "Cantidad de Registros filtrados: " + str(count) + '\n')
        return ("Error Filtrando Data......Proceso no Ok\n" +
                "Cantidad de Registros filtrados: " + str(count) + '\n')
def ValidarDocumento(path):
    try:
        respuesta = pros.validaFormat(path)
        log.info('Archivo: ' + path + 'Validado Correctamente')
        return (respuesta)
    except:
        log.error('Archivo: ' + path + 'Error al intentar Validar documento')
def mostrar_usuarios(matriz):

    lista_usuarios = matriz
    lista_usuarios = [["USUARIO", "UID"]] + lista_usuarios

    longitud_uid = pr.longitud_maxima(lista_usuarios, 0)
    longitud_usr = pr.longitud_maxima(lista_usuarios, 1)

    usuarios = [[
        "|" + usuario[0] + " " * (longitud_uid - len(usuario[0])),
        "|" + usuario[1] + " " * (longitud_usr - len(usuario[1])) + "|",
    ] for usuario in lista_usuarios]
    print(" " + "-" * (longitud_uid + longitud_usr + 2))
    print(usuarios[0][0], usuarios[0][1])
    print(" " + "-" * (longitud_uid + longitud_usr + 2))
    for usuario in usuarios[1:]:
        print(usuario[0], usuario[1])
    print(" " + "-" * (longitud_uid + longitud_usr + 2))
def CargarFiltrado(path):

    try:
        for data in datafilter:
            pros.escritura(data, path)
        log.info(
            'Proceso de Carga de archivo Registros para ser revisados.txt completado......Estado OK\n'
        )
        return (
            'Proceso de Carga de archivo Registros para ser revisados.txt completado......Estado OK\n'
        )
    except:
        log.error(
            'Proceso de Carga de archivo Registros para ser revisados.txt incompleto......Estado NoOK\n'
        )
        return (
            'Proceso de Carga de archivo Registros para ser revisados.txt incompleto......Estado NoOK\n'
        )
示例#13
0
    def Ejecutar(self):
        if (self.ui.EmisorRadioButton.isChecked()):
            if (self.pathArchivo != "" and self.LlaveEmisorPath != ""
                    and self.LlaveReceptorPath != ""):
                flag, num = Procesos.Emisor(self.pathArchivo,
                                            self.LlaveEmisorPath,
                                            self.LlaveReceptorPath)
                if flag:
                    self.ui.Estatus.setText("Archivo Procesado Correctamente")
                else:
                    if num == 1:
                        self.ui.Estatus.setText(
                            "Error en la llave del Receptor")
                    elif num == 2:
                        self.ui.Estatus.setText("Error en la llave del Emisor")
                    elif num == 3:
                        self.ui.Estatus.setText("Error al procesar el archivo")
            else:
                self.ui.Estatus.setText("Seleccione los archivos necesarios")

        elif (self.ui.ReceptorRadioButton.isChecked()):
            if (self.pathArchivo != "" and self.LlaveEmisorPath != ""
                    and self.LlaveReceptorPath != ""):
                flag, num = Procesos.Receptor(self.pathArchivo,
                                              self.LlaveEmisorPath,
                                              self.LlaveReceptorPath)
                if flag:
                    self.ui.Estatus.setText("Archivo Correcto")
                else:
                    if num == 1:
                        self.ui.Estatus.setText(
                            "Error en la llave del Receptor")
                    elif num == 2:
                        self.ui.Estatus.setText("Error en la llave del Emisor")
                    elif num == 3:
                        self.ui.Estatus.setText(
                            "Error al verificar el archivo, Error de Autenticacion"
                        )
            else:
                self.ui.Estatus.setText("Seleccione los archivos necesarios")
        else:
            self.ui.Estatus.setText("Seleccione una Opcion")
示例#14
0
def matar():
    if (not flask.request.json or not 'pid' in flask.request.json):
        mensaje = {'Mensaje': Constantes.ingreseDatos}
        return response(mensaje, 400)
    pid = int(flask.request.json['pid'])
    data = Procesos.matarProcesos(pid)
    if data == Constantes.noExistePorceso:
        mensaje = {'Mensaje': data, 'PID': pid}
        return response(mensaje, 404)

    return response(data, 200)
def ReporteTecnico(TotalRgistros, TiempoReparacio, TiempoFiltrado,
                   TiempoRecargaArchivoOri, TiempoGeneracionReportes,
                   TiempoTotalEjecucion):
    try:
        pros.GenerarReporteEjecucion(TotalRgistros, TotalRegistrosReparado,
                                     TotalRegistrosfiltrados, TiempoReparacio,
                                     TiempoFiltrado, TiempoRecargaArchivoOri,
                                     TiempoGeneracionReportes,
                                     TiempoTotalEjecucion)
    except:
        log.error('Errror Al generar Reporte Tecnico.... Estado NoOK\n')
def Reparar():

    count = 0
    try:
        for data in datafull:
            Result = pros.searchSpace(data)
            if (Result > 0):
                count = count + Result
                clearLine = pros.buildLine(data)
                dataclear.append(clearLine)
            else:
                dataclear.append(data)
        log.info('Proceso de Reparacion Completado.....Estado OK' +
                 'Cantidad de Registros Reparados: ' + str(count) + '\n')
        TotalRegistrosReparado = count
        return ('Proceso de Reparacion Completado.....Estado OK' +
                'Cantidad de Registros Reparados: ' + str(count) + '\n')
    except:
        log.error('Proceso de Reparacion No Completados.....Estado NoOK\n' +
                  'Verificar Rura o Formato del documento analizado\n')
        return ('Proceso de Reparacion No Completados.....Estado NoOK\n' +
                'Verificar Rura o Formato del documento analizado\n')
示例#17
0
 def Ejecutar(self):
     if (self.ui.CifradoradioButton.isChecked()):
         if (self.pathArchivo != "" and self.pathLlave != ""):
             flag = Procesos.Cifrar(self.pathArchivo, self.pathLlave)
             if flag:
                 self.ui.Estatus.setText("Archivo Cifrado Correctamente")
             else:
                 self.ui.Estatus.setText(
                     "Error al cifrar, ingrese la llave Correcta")
         else:
             self.ui.Estatus.setText("Seleccione los archivos necesarios")
     elif (self.ui.DescifradoradioButton.isChecked()):
         if (self.pathArchivo != "" and self.pathLlave != ""):
             flag = Procesos.DesCifrar(self.pathArchivo, self.pathLlave)
             if flag:
                 self.ui.Estatus.setText("Archivo Descifrado Correctamente")
             else:
                 self.ui.Estatus.setText(
                     "Error al descifrar, ingrese la llave Correcta")
         else:
             self.ui.Estatus.setText("Seleccione los archivos necesarios")
     else:
         self.ui.Estatus.setText("Seleccione una Opcion")
def lectura(path):
    Tinicio = time()
    data = open(path, 'r')
    titulo = data.readline()
    pros.resetFile('Registros para ser revisados.txt')

    for linea in data:
        datafull.append(linea)

    TotalRgistros = len(datafull)
    TRini = time()
    Registros_reparados = Reparar()
    Registros_totales = 'Total de Registros para analizar: ' + str(
        len(datafull)) + '\n'
    datafull.clear()
    TRfin = time()
    TiempoReparacio = round(TRfin - TRini, 3)
    TFini = time()
    Registros_filtrados = filtrar()
    pros.escritura(titulo, 'Registros para ser revisados.txt')
    Respuesta_Carga_Filter = CargarFiltrado('Registros para ser revisados.txt')
    datafilter.clear()
    TFfin = time()
    TiempoFiltrado = round(TFfin - TFini, 3)
    TROini = time()
    pros.resetFile(path)
    pros.escritura(titulo, path)
    Respuesta_mod_Origin = ModOrigin(path)
    TROfin = time()
    TiempoRecargaArchivoOri = round(TROfin - TROini, 3)
    TRPini = time()
    ReporteEjecutivo()
    dataused.clear()
    data.close()
    TRPfin = time()
    TiempoGeneracionReportes = round(TRPfin - TRPini, 3)
    Tfinal = time()
    Tejecucion = round((Tfinal - Tinicio), 3)
    TiempoTotalEjecucion = Tejecucion
    ReporteTecnico(TotalRgistros, TiempoReparacio, TiempoFiltrado,
                   TiempoRecargaArchivoOri, TiempoGeneracionReportes,
                   TiempoTotalEjecucion)
    Detalle_proceso = Registros_totales + Registros_reparados + Registros_filtrados + Respuesta_Carga_Filter + Respuesta_mod_Origin + 'Tiempo total de ejecucion en Segundos: ' + str(
        Tejecucion) + '\n'
    return (Detalle_proceso)
示例#19
0
def repriorizar():
    if (not flask.request.json or not 'NI' in flask.request.json) or (
            not 'pid' in flask.request.json):
        mensaje = {'Mensaje': Constantes.ingreseDatos}
        return response(mensaje, 400)

    intNI = int(flask.request.json['NI'])
    pid = int(flask.request.json['pid'])
    if intNI < -20 or intNI > 20:
        mensaje = {'Mensaje': 'prioridades -20 hasta 20', 'PID': pid}
        return response(mensaje, 400)

    data = Procesos.repriorizarProceso(pid, intNI)
    if data == Constantes.noExistePorceso:
        mensaje = {'Mensaje': data, 'PID': flask.request.json['pid']}
        return response(mensaje, 404)
    return response(data, 200)
示例#20
0
def buscar_procesos(proceso_buscado,tipo):
    #Lista de procesos sobre la que buscará
    procesos = pr.listar_procesos(True)

    if tipo == "PID":
        #PID del proceso que se desea buscar
        proceso_busqueda = proceso_buscado
        #Se busca el proceso
        proceso_encontrado = [proceso for proceso in procesos[1:] if proceso_busqueda == proceso[1]]
    if tipo == "Nombre":
        #PID del proceso que se desea buscar
        proceso_busqueda = proceso_buscado
        #Se busca el proceso
        proceso_encontrado = [proceso for proceso in procesos[1:] if proceso_busqueda == proceso[0]]
    
    proceso_encontrado = [procesos[0]]+proceso_encontrado
    return proceso_encontrado
    #Mensajes de opciones del menú
    opciones = [
        "1. Mostrar procesos del sistema",
        "2. Mostrar usuarios y sus procesos", "3. Matar procesos",
        "0. Cerrar administrador"
    ]

    #Se imprime el menú principal
    msg.mensajes_menu_principal(opciones)

    #Se pide al usuario la opción del menú
    opcion = input("Seleccione una opción: ")

    #Control de opciones
    if (opcion == "1"):
        lista_procesos = pr.listar_procesos()
        pr.mostrar_procesos(lista_procesos)
    elif (opcion == "2"):
        lista_procesos_usuarios = pr.listar_procesos(True)
        pr.mostrar_procesos_usarios(lista_procesos_usuarios)
    elif (opcion == "3"):
        proceso_a_matar = input("Ingrese el Nombre o PID del proceso: ")
        if proceso_a_matar == "1":
            msg.mostrar_mensaje(
                "Operación denegada: este proceso no se puede matar")
        else:
            mp.matar_proceso(proceso_a_matar)
    elif (opcion == "0"):
        msg.mostrar_mensaje("Programa terminado")
        break
    else:
示例#22
0
def listar():
    data = Procesos.listaProcesos()
    return response(data, 200)