예제 #1
0
def descVigenere(archEnt,clave,archSal):
	doc=archEnt
	palabra=""
	f = archivo.abrirArchivo(doc)
	if f == '':
		print 'No se encontro el archivo '+doc
	else:
		for pal in f.readlines():
			palabra=palabra+pal
		f.close()
		lg=len(palabra)
		k=clave
		lk=len(k)
		i=0
		m=""
		alf=alfabeto.getAlfabeto()
		la=alfabeto.tamAlfabeto()
		while(i<lg):
			if(i<lk):
				dato=alf[((alf.index(palabra[i])-alf.index(k[i]))%la)]
				m=m+dato
			else:
				dato=alf[((alf.index(palabra[i])-alf.index(m[i-lk]))%la)]
				m=m+dato
			i=i+1
		n = archSal
		fichero = archivo.escribirArchivo(n,m)
		if fichero=='':
			print 'Ocurrio un error al intentar escribir en ', n
		else:
			fichero.close()
			print "\n*********************************************************************"
			print "SE GENERO EL ARCHIVO ",n," CON EL MENSAJE EN CLARO"
			print "*********************************************************************\n\n\n"
예제 #2
0
def descVigenere(archEnt, clave, archSal, cod):
    doc = archEnt
    palabra = ""
    k = ""
    f = archivo.abrirArchivo(doc)
    h = archivo.abrirArchivo(clave)
    if f == '' or h == '':
        if (f == ''):
            print('No se encontro el archivo ' + doc)
        else:
            print('No se encontro el archivo ' + clave)
    else:
        for pal in f.readlines():
            palabra = palabra + pal
        f.close()
        lg = len(palabra)
        for cla in h.readlines():
            k = k + cla
        h.close()
        lk = len(k)
        i = 0
        j = 0
        m = ""
        alf = alfabeto.getAlfabeto()
        la = alfabeto.tamAlfabeto()
        while (i < lg):
            if (j < lk):
                dato = alf[((alf.index(palabra[i]) - alf.index(k[j])) % la)]
                m = m + dato
            else:
                dato = alf[((alf.index(palabra[i]) - alf.index(m[j - lk])) %
                            la)]
                m = m + dato
            i = i + 1
            j = j + 1
        n = archSal
        if (cod == ""):
            fichero = archivo.escribirArchivo(n, m)
        else:
            fichero = archivo.escribirArchivo64(n, m)
        if fichero == '':
            print('Ocurrio un error al intentar escribir en ', n)
        else:
            fichero.close()
            print(
                "\n*********************************************************************"
            )
            print("SE GENERO EL ARCHIVO ", n, " CON EL MENSAJE EN CLARO")
            print(
                "*********************************************************************\n\n\n"
            )
예제 #3
0
def cifraVigenere(archEnt,clave,archSal): 
	doc=archEnt
	palabra=""
	f = archivo.abrirArchivo(doc)
	if f=='':
		print 'No se encontro el archivo '+doc
	else:
		for pal in f.readlines():
			palabra=palabra+pal
		f.close()
		k=clave
		lk=len(k)
		i=0
		c=""
		lg=len(palabra)
		alf=alfabeto.getAlfabeto()
		la=alfabeto.tamAlfabeto()
		#imprimirTexto(palabra)
		#auxiliar=acomodarTexto(palabra)
		#imprimirTexto(auxiliar)
		while(i<lg):	
			if(i<lk):
				if(palabra[i]!='\xc3'):
					##print i
					dato= alf[((alf.index(palabra[i])+alf.index(k[i]))%la)]
					c=c+dato
				else: 
					dato= alf[((alf.index(palabra[i]+palabra[i+1])+alf.index(k[i]))%la)]
					i=i+1
					c=c+dato
			else:
				if(palabra[i]!='\xc3'):
					dato=alf[((alf.index(palabra[i])+alf.index(palabra[i-lk]))%la)]
					c=c+dato
				else:
					##print palabra[i]+palabra[i+1]
					dato=alf[((alf.index(palabra[i]+palabra[i+1])+alf.index(palabra[i-lk]))%la)]
					i=i+1
					c=c+dato
			i=i+1
		n = archSal
		fichero = archivo.escribirArchivo(n, c)
		if fichero=='':
			print 'Ocurrio un error al intentar escribir en ', n
		else:
			fichero.close()
			print "\n*********************************************************************"
			print "  SE GENERO EL ARCHIVO ", n," CON EL MENSAJE CIFRADO"
			print "*********************************************************************\n\n\n"
예제 #4
0
#!/usr/bin/python
# -*- coding: utf8 -*-
import os, sys
import archivo  ############
import alfabeto  ############ IMPORTA ARCHIVOS
import operator  ###########

TAM_ALFABETO = alfabeto.tamAlfabeto()  #iguala el tamaño del alfabeto
abc = alfabeto.getAlfabeto()  #iguala a la funcion getAlfabeto
frecuAlta = ['E', 'A', 'S', 'O', 'I', 'N', 'R', 'D',
             'T']  ## definicion de frecuencias altas


def analisisFrecuencia(
        criptograma,
        nomArchivoSalida):  ## funcion analisisFrecuencia recibe dos parametros
    listaFrecu = frecuencias(
        criptograma
    )  # recibe e iguala criptograma de la funcion frecuencias en la variable listaFrecu
    k = verificarHipostesis(
        listaFrecu)  ### recibe la clave de la funcion verificarHipotesis
    print('La clave con la que se cifró es: ',
          k)  ###imprime la clave con la que se cifro
    mensajeClaro = ""
    i = 0
    while (i < len(criptograma)):  #mientras i sea menor que el criptograma
        ci = alfabeto.getPosicion(
            criptograma[i]
        )  #llama funcion getPosicion de archivo alfabeto y le iguala el valor de criptograma[i] a la variable ci
        modulo = (
            ci - k
예제 #5
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import analisador_lexico as al
import alfabeto as alfa
import automato as a

#definicoes
afn = a.afn
alfabeto = alfa.getAlfabeto()
afd = a.conversor_afd(afn, alfabeto)
tokens = []
codigo = ""

try:  #le arquivo
    f = open(sys.argv[1])
    for line in f:
        line = line.replace('\n', ' ')
        codigo += line
except Exception, e:
    print e

#tratamento
codigo = codigo.split(" ")  #faz um split por espaco
while '' in codigo:  #remove espacos em branco desnecessarios
    codigo.remove('')

tokens = al.analisadorLexico(afd, codigo)

for t in tokens:
예제 #6
0
#!/usr/bin/python
# -*- coding: utf8 -*-
import os, sys
import archivo
import alfabeto
import operator

TAM_ALFABETO = alfabeto.tamAlfabeto()
abc = alfabeto.getAlfabeto()
frecuAlta = ['E', 'A', 'S', 'O', 'I', 'N', 'R', 'D', 'T']


def analisisFrecuencia(criptograma, nomArchivoSalida):
    listaFrecu = frecuencias(criptograma)
    k = verificarHipostesis(listaFrecu)
    print('La clave con la que se cifró es: ', k)
    mensajeClaro = ""
    i = 0
    while (i < len(criptograma)):
        ci = alfabeto.getPosicion(criptograma[i])
        modulo = (ci - k) % TAM_ALFABETO
        mensajeClaro = mensajeClaro + abc[modulo]
        i += 1
    f = archivo.escribirArchivo(nomArchivoSalida, mensajeClaro)
    if f == '':
        print('Ocurrio un error al intentar escribir en', nomArchivoSalida)
    else:
        print('El mensaje descifrado se guardo correctamente en',
              nomArchivoSalida)
    #print mensajeClaro
예제 #7
0
def cifraVigenere(archEnt, clave, archSal, cod):
    doc = archEnt
    palabra = ""
    k = ""
    if (cod == ""):
        f = archivo.abrirArchivo(doc)
    else:
        f = archivo.abrirArchivo64(doc)
    h = archivo.abrirArchivo(clave)
    if f == '' or h == '':
        if (f == ''):
            print('No se encontro el archivo ' + doc)
        else:
            print('No se encontro el archivo ' + clave)
    else:
        if (cod == ""):
            for pal in f.readlines():
                palabra = palabra + pal
            f.close()
        else:
            palabra = f
        for cla in h.readlines():
            k = k + cla
        h.close()
        lk = len(k)
        i = 0
        j = 0
        c = ""
        lg = len(palabra)
        alf = alfabeto.getAlfabeto()
        la = alfabeto.tamAlfabeto()
        flag = 1
        # imprimirTexto(palabra)
        # try:
        while (i < lg):
            if (j < lk):
                if (cod == ""):
                    dato = alf[((alf.index(palabra[i]) + alf.index(k[j])) %
                                la)]
                else:
                    p1 = chr(palabra[i])
                    dato = alf[((alf.index(p1) + alf.index(k[j])) % la)]
                c = c + dato
            else:
                if (cod == ""):
                    dato = alf[(
                        (alf.index(palabra[i]) + alf.index(palabra[j - lk])) %
                        la)]
                else:
                    p1 = chr(palabra[i])
                    p2 = chr(palabra[j - lk])
                    dato = alf[((alf.index(p1) + alf.index(p2)) % la)]
                c = c + dato
            i = i + 1
            j = j + 1
        if (flag != -1):
            n = archSal
            fichero = archivo.escribirArchivo(n, c)
            if fichero == '':
                print('Ocurrio un error al intentar escribir en ', n)
            else:
                fichero.close()
                print(
                    "\n*********************************************************************"
                )
                print("  SE GENERO EL ARCHIVO ", n, " CON EL MENSAJE CIFRADO")
                print(
                    "*********************************************************************\n\n"
                )
        else:
            print("La ejecución se detuvo")