Cifrado Morse

Iniciado por Sanko, Septiembre 06, 2013, 11:26:43 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Bueno, este cifrado fue realizado con fin de resolver un reto de programación en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Código :

Código: python
# Cifrado Morse.py - Sanko
# -*- coding: utf-8 -*-

class cif_morse():

def __init__(self):
self.table = {'A':'.-', 'B':'-...', 'C':'-.-.',
  'D':'-..', 'E':'.', 'F':'..-.', 'G':'--.',
  'H':'....', 'I':'..', 'J':'.---', 'K':'-.-',
  'L':'.-..', 'M':'--', 'N':'-.', 'Ñ':'--.--',
  'O':'---', 'P':'.--.', 'Q':'--.-', 'R':'.-.',
  'S':'...', 'T':'-', 'U':'..-', 'V':'...-',
  'W':'.--', 'X':'-..-', 'Y':'-.--', 'Z':'--..',
  'Ä':'.-.-', 'Ö':'---.', 'Ü':'..--', '0':'-----',
  '1':'.----', '2':'..---', '3':'...--', '4':'....-',
  '5':'.....', '6':'-....', '7':'--...', '8':'---..',
  '9':'----.', '.':'.-.-.-', ',':'--..--', '?':'..--..',
  '!':'..--.', ':':'---...', '"':'.-..-.', "'":".----.",
  '=':'-...-', ' ':' '}

self.table2 = {}

# Inicializar desde aqui
self.__encode('Sanko os saluda')
self.__decode('... .- -. -.- ---   --- ...   ... .- .-.. ..- -.. .-')



def __encode(self, text):
self.text = text
self.encoded = ''

if self.text != '':
self.text = self.text.upper()

for i in self.text:
self.encoded += self.table[i] + ' '

print "Encoded: %s"% self.encoded



def __decode(self, en_text):
self.en_text = en_text
self.decoded = ''

for i in self.table:
self.table2[self.table[i]] = i

self.en_text = self.en_text.split(' ')

for x in self.en_text:
try:
self.en_text.remove('')
except:
pass
self.decoded += self.table2[x]

print "Decoded: %s"% self.decoded

cif_morse()

      
Imágen :
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Un cifrado más, buena esa, Sanko.
Pero ya tenías que aburrirte para haber programado esto... Lo mejor de todo los ejemplos, jajajajaja.
PD: me gusta lo limpio que te quedó el código :P
Contacto: @migueljimeno96 -

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Un cifrado más, buena esa, Sanko.
Pero ya tenías que aburrirte para haber programado esto... Lo mejor de todo los ejemplos, jajajajaja.
PD: me gusta lo limpio que te quedó el código :P

Jajaja suelo despertarme y pasarme por udtools a ver si han subido algún reto de programación xD, programar antes de salir de casa relaja a uno.
Saludos gayer.
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Septiembre 07, 2013, 04:25:34 AM #3 Ultima modificación: Septiembre 07, 2013, 04:34:04 AM por arthusu
Bueno Sanko tambien lo intente hacer en PHP, solo que al decodificar no se como darle los espacios y otra cosa queria usar en la expresion regular \b$acamivariable\b en el decodificado pero no daba el resultado deseado por eso use ^preg_quote($acamivariable)$, puede contener muchos errores por lo que si hay alguna forma mejor o algo que se pueda mejorar y sepan como hacerlo son libres de editarlo o comentarme como hacerlo, gracias Sanko  me diverti un rato salu2 bro

Código: php
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Cifrado morse</title>
</head>
<body>
<?php
$abc=array('A'=>'.-','B'=>'-...','C'=>'-.-.','D'=>'-..','E'=>'.','F'=>'..-.','G'=>'--.','H'=>'....','I'=>'..','J'=>'.---','K'=>'-.-','L'=>'.-..','M'=>'--','N'=>'-.','Ñ'=>'--.--','O'=>'---','P'=>'.--.','Q'=>'--.-','R'=>'.-.','S'=>'...','T'=>'-','U'=>'..-','V'=>'...-','W'=>'.--','X'=>'-..-','Y'=>'-.--','Z'=>'--..',0=>'-----',1=>'.----',2=>'..---',3=>'...--',4=>'...-',5=>'.....',6=>'-....',7=>'--...',8=>'---..',9=>'----.','.'=>'.-.-.-',','=>'--..--','?'=>'..--..','!'=>'..--.',':'=>'---...','"'=>'.-..-.',"'"=>'.----.','='=>'-...-'," "=>" ");

if(isset($_POST['enviar'])){
if(!empty($_POST['morse'])){
switch ($_POST['morse2']) {
case 'Encode':
$post=$_POST['morse'];
for($i=0;$i<=strlen($post);$i++){
$letra=substr($post, $i,1);
foreach($abc as $key=>$value){
if(preg_match("/^".preg_quote($letra)."$/i", $key)){
echo htmlentities($value)." ";
}
}
}
break;
case 'Decode':
$post=$_POST['morse'];
$morse_pal=explode(" ",$post);
foreach($morse_pal as $letra){

foreach($abc as $key=>$value){
if(preg_match("/^".preg_quote($letra)."$/i", $value)){
echo htmlentities(strtoupper($key));
}
}
}
break;
default:
echo "Ocurrio un error";
break;
}
}else{
echo "Rellene el campo";
}
}

?>
<form action="" method="post">
<p><b>Ingrese el texto:</b></p>
<input name="morse" type="text" /><br />
<input type="radio" name="morse2" value="Encode">Codificar<br>
<input type="radio" name="morse2" value="Decode" checked="checked">Decodificar<br>
<input type="submit" name="enviar" />
</form>
</body>
</html>


Resultado:



Pentest - Hacking & Security Services

Contact me: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Debes colocar espacios ejemplo después de .-[aquí va un espacio]---[aquí otro]---   así sucesivamente.  obviamente si tienes un espacio ahí se colocaran 2. o simplemente agregas algún carácter que te ayude a delimitar para el decodificado.

ejemplo así:

Código: php
<?php
$abc=array('A'=>'.-','B'=>'-...','C'=>'-.-.','D'=>'-..','E'=>'.','F'=>'..-.','G'=>'--.','H'=>'....','I'=>'..','J'=>'.---','K'=>'-.-','L'=>'.-..','M'=>'--','N'=>'-.','Ñ'=>'--.--','O'=>'---','P'=>'.--.','Q'=>'--.-','R'=>'.-.','S'=>'...','T'=>'-','U'=>'..-','V'=>'...-','W'=>'.--','X'=>'-..-','Y'=>'-.--','Z'=>'--..',0=>'-----',1=>'.----',2=>'..---',3=>'...--',4=>'...-',5=>'.....',6=>'-....',7=>'--...',8=>'---..',9=>'----.','.'=>'.-.-.-',','=>'--..--','?'=>'..--..','!'=>'..--.',':'=>'---...','"'=>'.-..-.',"'"=>'.----.','='=>'-...-'," "=>" ");
//echo $abc['A'];
$final="";

$cadena="HOLA HOLA";
  for($i=0;$i<=strlen($cadena);$i++){
  $letra=substr($cadena, $i,1);
     
  if ($letra==" ") {
       $final.=$abc[$letra];
   }else{
    $final.=$abc[$letra] . "&nbsp;";
        }

  }
  echo $final;
?>



así en el descifrado te queda solo hacer split con un espacio.


saludos



Hombre sí... pero el morse no es un cifrado, todo lo contrario.
Hace un tiempo yo estaba muy aficionado a eso del morse  :P Vale la pena conocerlo, nunca sabes para lo que te servirá.

Ya arregle lo de los espacios gracias a Danyfirex aca dejo el codigo:

Código: php
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Cifrado morse</title>
</head>
<body>
<?php
$abc=array('A'=>'.-','B'=>'-...','C'=>'-.-.','D'=>'-..','E'=>'.','F'=>'..-.','G'=>'--.','H'=>'....','I'=>'..','J'=>'.---','K'=>'-.-','L'=>'.-..','M'=>'--','N'=>'-.','Ñ'=>'--.--','O'=>'---','P'=>'.--.','Q'=>'--.-','R'=>'.-.','S'=>'...','T'=>'-','U'=>'..-','V'=>'...-','W'=>'.--','X'=>'-..-','Y'=>'-.--','Z'=>'--..',0=>'-----',1=>'.----',2=>'..---',3=>'...--',4=>'...-',5=>'.....',6=>'-....',7=>'--...',8=>'---..',9=>'----.','.'=>'.-.-.-',','=>'--..--','?'=>'..--..','!'=>'..--.',':'=>'---...','"'=>'.-..-.',"'"=>'.----.','='=>'-...-',' '=>' ');

if(isset($_POST['enviar'])){
if(!empty($_POST['morse'])){
switch ($_POST['morse2']) {
case 'Encode':
$post=$_POST['morse'];
for($i=0;$i<=strlen($post);$i++){
$letra=substr($post, $i,1);
foreach($abc as $key=>$value){
if(preg_match("/^".preg_quote($letra)."$/i", $key)){
echo htmlentities($value)."&nbsp;";
}
}
}
break;
case 'Decode':
$post=$_POST['morse'];
$morse_pal=explode(" ",$post);
foreach($morse_pal as $indice=>$letra){
foreach($abc as $key=>$value){
if(empty($letra)){$letra=' ';}
if(preg_match("/^".preg_quote($letra)."$/i", $value)){
echo htmlentities(strtoupper($key));
}
}
}

break;
default:
echo "Ocurrio un error";
break;
}
}else{
echo "Rellene el campo";
}
}

?>
<form action="" method="post">
<p><b>Ingrese el texto:</b></p>
<input name="morse" type="text" /><br />
<input type="radio" name="morse2" value="Encode">Codificar<br>
<input type="radio" name="morse2" value="Decode" checked="checked">Decodificar<br>
<input type="submit" name="enviar" />
</form>
</body>
</html>
Pentest - Hacking & Security Services

Contact me: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta