elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema en script para cifrar [Python]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema en script para cifrar [Python]  (Leído 3,382 veces)
nohate

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema en script para cifrar [Python]
« en: 15 Julio 2013, 14:00 pm »

Buenas!
Estoy intentando hacer un script bastante simple para cifrar en Python (siguiendo el método del Cifrado César), éste es el código.

Código:
def crypt(text,x):
    abc = "abcdefghijklmnopqrstuvwxyz"
    text = text.lower()
    for i in range (0,len(text)):
        n = abc.find(text[i])
        if n<0:
            text = text.replace(text[i],text[i])
        if n>=0:
            text = text.replace(text[i],abc[(n+x)%len(abc)])
    text = text.upper()                               
    return text

El problema aparece si por ejemplo intento hacer crypt('hola',4). Lo que hace el script es cambiar la h por una l, y luego cuando llega a la l de la palabra hola cambia las dos eles. Por esa misma razón si intento cifrar un escrito de una medida considerable al final acaba sustituyéndolo todo por la misma letra. He intentado buscar otros ejemplos en python de criptografia pero la mayoría de scripts son más complejos que este. Me gustaría saber si hay alguna forma de fijar una posición una vez ya ha sido modificada una vez, de hacer que no pueda cambiar dos veces.

Muchísimas gracias, un saludo!


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Problema en script para cifrar [Python]
« Respuesta #1 en: 15 Julio 2013, 15:35 pm »

Estás reemplazando el caracter en todo el texto.

Tenemos la palabra "hello", y lo que hace tu script es esto:
 - Replace "h" por "l" en todo el texto, resultado: "lello"
Ahí se puede ver cláramente que al llegar a las otras dos "ll" va a haber un conflicto porque también vas a reemplazar la primera "l".

Solución: No hagas diréctamente las modificaciones sobre el argumento "text", o usa replace para reemplazar un caracter en X posición del texto, pero no el caracter en el texto entero.

Código
  1. def crypt(text,x):
  2.    abc = "abcdefghijklmnopqrstuvwxyz"
  3.    newtext = ""
  4.    for i in range (0,len(text.lower())):
  5.        n = abc.find(text[i])
  6.        if n<0:
  7.            newtext = newtext + text[i]
  8.        if n>=0:
  9.         newtext = newtext + abc[(n+x)%len(abc)]
  10.    return newtext.upper()

Saludos


« Última modificación: 15 Julio 2013, 15:40 pm por EleKtro H@cker » En línea

nohate

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema en script para cifrar [Python]
« Respuesta #2 en: 15 Julio 2013, 17:13 pm »

No se me había pasado por la cabeza hacerlo de esa forma, la verdad Ö. Muchísimas gracias por la ayuda! ^^
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
script para sacar emails de paginas webs [python] [v3.0] « 1 2 3 »
Scripting
Kase 21 21,358 Último mensaje 25 Febrero 2014, 14:54 pm
por Afterlife
Problema: py2exe y ex-freeze para python 'Multipart'
Scripting
inGnio 0 2,073 Último mensaje 28 Septiembre 2013, 19:14 pm
por inGnio
Cifrar conversaciones de Facebook - Para Paranoicos [TUTORIAL]
Seguridad
Yogur.org 0 2,034 Último mensaje 5 Noviembre 2013, 11:19 am
por Yogur.org
script en python para explotar vulnerabilidad openssl
Bugs y Exploits
roothelp 0 3,109 Último mensaje 9 Abril 2014, 22:36 pm
por roothelp
el script al momento de cifrar los archivos del usb truena python « 1 2 »
Scripting
geshiro 15 6,221 Último mensaje 8 Diciembre 2016, 22:29 pm
por geshiro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines