Underc0de - Hacking y seguridad informática

Programación Scripting => Python => Mensaje iniciado por: darkucla en Enero 15, 2020, 10:59:28 pm

Título: Cifrado Cesar ... 3 Funciones
Publicado por: darkucla en Enero 15, 2020, 10:59:28 pm
CHQF ÑUQZ, NTBEN XQF YHQFGEB YU OBPUSB PQX OURENPB OQFNE FBZ 3 RHZOUBZQF, HZN OUREN QX GQKGB, BGEN XB PQFOUREN L BGEN YHQFGEN XNF OBYÑUZNOUBZQF PQ CBFUÑXQF PQFOURENPBF QFCQEB XQF CHQPN FQEIUE L FU NXSHUQZ XB CHQPQ YQVBENE, CBE RNIBE, OBYCNEGUEXB

Código: Python
  1. def CifradoCesar(strTexto, intROT, intMod = 27):
  2.         lstABC = list(chr(x) for x in range(65,91))
  3.         if intMod == 27:
  4.                 lstABC.insert(14,"Ñ")
  5.         strCifrado = ""
  6.         for strLetra in strTexto:
  7.                 strLetra = strLetra.upper()
  8.                 if strLetra in lstABC:
  9.                         intIndex = lstABC.index(strLetra)
  10.                         intIndexCodificado = (intIndex + intROT) % len(lstABC)
  11.                         strLetra = lstABC[intIndexCodificado]
  12.                 strCifrado += strLetra
  13.         return strCifrado
  14.  
  15. def DescifradoCesar(strCifrado, intROT, intMod = 27):
  16.         lstABC = list(chr(x) for x in range(65,91))
  17.         if intMod == 27:
  18.                 lstABC.insert(14,"Ñ")
  19.         strDescifrado = ""
  20.         for strLetra in strCifrado:
  21.                 if strLetra in lstABC:
  22.                         intIndex = lstABC.index(strLetra)
  23.                         intIndexDecodificado = (intIndex - intROT) % len(lstABC)
  24.                         strLetra = lstABC[intIndexDecodificado]
  25.                 strDescifrado += strLetra
  26.         return strDescifrado
  27.  
  28. def EncuentraCifradoCesar(strCifrado):
  29.         lstABC = list(chr(x) for x in range(65,91))
  30.         for intROT in range(len(lstABC)+1):
  31.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  32.         print("")
  33.         lstABC.insert(14,"Ñ")
  34.         for intROT in range(len(lstABC)+1):
  35.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  36.  

Código: Python
  1. strTexto = input("Introduzca el texto a Descifrar: ")
  2. intROT = int(input("Desplazamiento? (0 Muestra Todos): "))
  3. if intROT == 0:
  4.         EncuentraCifradoCesar(strTexto)
  5. else:
  6.         print("Descifrado:", DescifradoCesar(strTexto, intROT))
  7.  
Título: Re:Cifrado Cesar ... 3 Funciones
Publicado por: DtxdF en Enero 15, 2020, 11:30:30 pm
Excelente para la fuerza bruta en los retos de Underc0de  :-X  ;D

~ DtxdF
Título: Re:Cifrado Cesar ... 3 Funciones
Publicado por: darkucla en Enero 15, 2020, 11:46:18 pm
Plebes, ya se los cambié...
Código: Python
  1.  
  2. def CifradoCesar(strTexto, intROT, intMod = 27):
  3.         return CodigoCesar(strTexto, intROT, intMod, True)
  4.  
  5. def DescifradoCesar(strCifrado, intROT, intMod = 27):
  6.         return CodigoCesar(strCifrado, intROT, intMod, False)
  7.  
  8. def CodigoCesar(strTexto, intROT, intMod = 27, bolCifrar=True):
  9.         lstABC = list(chr(x) for x in range(65,91))
  10.         if intMod == 27:
  11.                 lstABC.insert(14,"Ñ")
  12.         strCifrado = ""
  13.         for strLetra in strTexto:
  14.                 strLetra = strLetra.upper()
  15.                 if strLetra in lstABC:
  16.                         intIndex = lstABC.index(strLetra)
  17.                         if bolCifrar:
  18.                                 intIndexCodificado = (intIndex + intROT) % len(lstABC)
  19.                         else:
  20.                                 intIndexCodificado = (intIndex - intROT) % len(lstABC)
  21.                         strLetra = lstABC[intIndexCodificado]
  22.                 strCifrado += strLetra
  23.         return strCifrado
  24.  
  25. def EncuentraCifradoCesar(strCifrado):
  26.         lstABC = list(chr(x) for x in range(65,91))
  27.         for intROT in range(len(lstABC)+1):
  28.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  29.         print("")
  30.         lstABC.insert(14,"Ñ")
  31.         for intROT in range(len(lstABC)+1):
  32.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  33.  
  34.  
Título: Re:Cifrado Cesar ... 3 Funciones
Publicado por: darkucla en Enero 16, 2020, 12:42:18 am
Nuevamente hay cambios.... ahora una función VoyATenerSuerte()
la cual muestra las 2 posibles soluciones basado en el numero máximo de leras repetidas, podrían ser la A o la E

Código: Python
  1. def CifradoCesar(strTexto, intROT, intMod = 27):
  2.         return CodigoCesar(strTexto, intROT, intMod, True)
  3.  
  4. def DescifradoCesar(strCifrado, intROT, intMod = 27):
  5.         return CodigoCesar(strCifrado, intROT, intMod, False)
  6.  
  7. def CodigoCesar(strTexto, intROT, intMod = 27, bolCifrar=True):
  8.         lstABC = list(chr(x) for x in range(65,91))
  9.         if intMod == 27:
  10.                 lstABC.insert(14,"Ñ")
  11.         strCifrado = ""
  12.         for strLetra in strTexto:
  13.                 strLetra = strLetra.upper()
  14.                 if strLetra in lstABC:
  15.                         intIndex = lstABC.index(strLetra)
  16.                         if bolCifrar:
  17.                                 intIndexCodificado = (intIndex + intROT) % len(lstABC)
  18.                         else:
  19.                                 intIndexCodificado = (intIndex - intROT) % len(lstABC)
  20.                         strLetra = lstABC[intIndexCodificado]
  21.                 strCifrado += strLetra
  22.         return strCifrado
  23.  
  24. def EncuentraCifradoCesar(strCifrado):
  25.         lstABC = list(chr(x) for x in range(65,91))
  26.         VoyATenerSuerteCesar(strCifrado, lstABC)
  27.         for intROT in range(len(lstABC)+1):
  28.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  29.         print("")
  30.         lstABC.insert(14,"Ñ")
  31.         VoyATenerSuerteCesar(strCifrado, lstABC)
  32.         for intROT in range(len(lstABC)+1):
  33.                 print(intROT, DescifradoCesar(strCifrado, intROT, len(lstABC)), len(lstABC))
  34.  
  35.  
  36. def VoyATenerSuerteCesar(strTexto, lstABC):
  37.         lstRepetidas = []
  38.         for strLetra in lstABC:
  39.                 strLetra = strLetra.upper()
  40.                 lstRepetidas.append(strTexto.count(strLetra))
  41.  
  42.         intNumMax = max(lstRepetidas)
  43.         print("Voy a tener suerte....")
  44.         # Posible A
  45.         intIndex = lstRepetidas.index(intNumMax)
  46.         print(intIndex, DescifradoCesar(strTexto, intIndex))
  47.         # Posible E
  48.         intIndex = lstRepetidas.index(intNumMax)-4
  49.         print(intIndex, DescifradoCesar(strTexto, intIndex))
  50.         input("presiona enter....")
  51.