Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - S[e]C

#1
GNU/Linux / Colorizando la Bash
Enero 22, 2011, 06:01:14 PM
Primero sabemos que el archivo de configuracion de la shell esta en el directorio raiz del usuario correspondiente en .bashrc, aquí en donde agregamos las configuraciones, personalizaciones que deseemos, vamos a ver primero el contenido por default, en mi caso:
Código: php

sec@ansicoder ~$ cat .bashrc

# Check for an interactive session
[ -z "$PS1" ] && return

alias ls='ls --color=auto'

PS1='[\u@\h \W]\$ '


Bueno, lo primero que tenemos que editar acá es la PS1 que es la variable que da formato a nuestra shell, veamos, una variable PS1 un poco más compleja:
Código: php

PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '


Primero necesitamos saber el significado de \h, \e, \w ,etc ... para esto recurrimos al manpages de bash, ya saben: "man bash" , pero es un poco extenso por lo que pegaré No tienes permitido ver los links. Registrarse o Entrar a mi cuenta la parte que nos interesa, de la config del prompt.

Lo importante de comprender aparte de que diablos es \h, \u ... es estos dos delimitadores:

Citar\[     comienza un secuencia de carácteres no imprimibles
\]     termina un secuencia de carácteres no imprimibles

Bueno pues con está información, lo primordial que debemos saber es, el significado de las secuencias de escape \h, \u, \w ... para poder ponerlas donde queramos, y saber como usar los delimitadores que acabo de mencionar y usar \e para dar el color que queramos, a continuación pongo una lista de colores:

Código: php
Negro       0;30     Gris Obscuro  1;30
Azul        0;34     Azul Claro    1;34
Verde       0;32     Verde Claro   1;32
Cyan        0;36     Cyan Claro    1;36
Rojo        0;31     Rojo Claro    1;31
Purpura     0;35     Fiuscha       1;35
Café        0;33     Amarillo      1;33
Gris Claro  0;37     Blanco        1;37


Bueno eso es basicamente las modificaciones que podemos hacer al prompt, tambien podemos poner la hora, etc, para eso mirar las manpages del bash , personalmente uso estas dos PS1 (user & root) :
user:

Código: php
PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'


root:

Código: php
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\]'


Colores del bash estilo Gentoo.

Paso 1: guardar el siguiente archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en :

Código: php
~/.dir_colors


Paso 2: copiar y pegar el siguiente texto a tu ".bashrc" :

Código: php
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
fi


Fuentes y links interesantes:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#2
Java / Expresiones regulares en Java
Abril 03, 2010, 12:38:49 PM
Bueno esta publicación consiste en un básico ejemplo del uso de expresiones regulares en java. Ademas ya que estoy comenzando en este lenguaje recuerdo ese dicho de: "Enseñando/compartiendo se aprende", así es que vamos allá:

¿ Que son las expresiones regulares ?

CitarUna expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos. Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe mediante el patrón "H(a|ä|ae)ndel".

Citado de: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿ Que necesitamos para usar expresiones regulares en Java ?

En Java a partir del JDK 1.4 se nos proporciona el paquete java.util.regexp el cual está formado por dos clases, que explicaré a continuación, la clase Matcher y la clase Pattern .


Las cuales incluiremos en nuestro programa de la siguiente manera:

Código: java
import java.util.regex.Matcher;  
import java.util.regex.Pattern; 



Algunos métodos interesantes de la clase "Matcher":

Código: java
int end(int group)  


Devuelve el índice del último carácter más 1 de la coincidente con la expresión regular.

Código: java
boolean find()  


Busca en la cadena de texto a analizar a partir del último matching, la secuencia de caracteres que puede concordar con la expresión regular

Código: java
boolean find(int start)  


Lo mismo que find() , pero empieza a buscar a partir de un índice que le es dado como parámetro.

Código: java
String group()  


Devuelve la cadena que ha sido aceptada por la expresión regular.

Código: java
String group (int group)  


Es el equivalente en perl a $n. Es decir, si tenemos una expresión regular tal que : "((a)(b)(c))", group(2) sería a.


Algunos métodos interesantes de la clase "Pattern":

Código: java
static Pattern compile (String expreg)  


Crea un patrón a partir de la expresión regular dada por expreg.

Código: java
static Pattern compile(String regex, int flags)  

Crea un patrón a partir de la expresión expreg teniendo en cuenta los flags. Los flags son opciones que se incluyen para tener un trato especial cuando se este trabajando con la expresión regular.
Ejemplo: si quiero que no me distinga entre mayúsculas y minúsculas, tendré que añadir el flag No tienes permitido ver los links. Registrarse o Entrar a mi cuenta_INSENSITIVE.

Código: java
int flags ()  


Devuelve los flags asociados a la expresión regular o patrón.

Código: java
Matcher matcher(CharSequence input)
 

Realizará el tratamiento del patrón sobre el texto que se le pase como entrada.

Código: java
static boolean matches(String regex, CharSequence input)  


La utilidad de este método es que permite la no utilización de un matcher para indicar si una expresión regular puede albergar una cadena o parte de esta.

Código: java
String pattern()  


Devuelve la expresión regular asociada al objeto Pattern sobre el que estemos trabajando.

Código: java
String [] split (CharSequence input)  


Tiene el mismo significado que en Perl;es decir, dado un patrón, te crea un array de String con las diferentes cadenas en las que se ha dividido.


El ejemplo

Código: java
import java.util.regex.Matcher;  
import java.util.regex.Pattern; 
 
public class regexpjava { 
 
       public static void main(String[] args) { 
 
           Pattern pat=null; 
           Matcher mat=null; 
           String texto="<title>Hola soy el titulo</title>"; 
           pat=Pattern.compile("<title>(.*?)</title>"); 
           mat=pat.matcher(texto); 
           System.out.println("Texto \t\t\t: "+texto); 
           if(mat.find()){ 
 
               System.out.println("Expresion regular \t: <title>(.*?)</title>"); 
               System.out.println("Match! \t\t\t: "+mat.group(1)); 
           } 
       } 


La salida sería la siguiente:

CitarTexto    : <title>Hola soy el titulo</title> 
Expresion regular  : <title>(.*?)</title> 
Match!    : Hola soy el titulo 

Bueno creo que el ejemplo es mas que entendible, como para no explicarlo, cualquier cosa aquí estamos.

Referencias:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#3
GNU/Linux / Comprimir / Descomprimir GNU/Linux
Abril 02, 2010, 01:11:11 PM
.tar (tar)
Empaquetar:
Código: php
tar cvf archivo.tar 


Desempaquetar:
Código: php
tar xvf archivo.tar


Ver el contenido (sin extraer):
Código: php
tar tvf archivo.tar



.tar.gz - .tar.z - .tgz (tar con gzip)
Empaquetar y comprimir:
Código: php
tar czvf archivo.tar.gz


Desempaquetar y descomprimir:
Código: php
tar xzvf archivo.tar.gz


Ver el contenido (sin extraer):
Código: php
tar tzvf archivo.tar.gz



.gz (gzip)
Comprimir:
Código: php
gzip -q archivo

(El archivo lo comprime y lo renombra como "archivo.gz")

Descomprimir:
Código: php
gzip -d archivo.gz

(El archivo lo descomprime y lo deja como "archivo"

Nota: gzip solo comprime archivos, no directorios

.bz2 (bzip2)
Comprimir:
Código: php
bzip2 archivo

ó
Código: php
bunzip2 archivo

(El archivo lo comprime y lo renombra como "archivo.bz2")

Descomprimir:
Código: php
bzip2 -d archivo.bz2

ó
Código: php
bunzip2 archivo.bz2

(El archivo lo descomprime y lo deja como "archivo")

Nota: bzip2 solo comprime archivos, no directorios

.tar.bz2 (tar con bzip2)
Comprimir:
Código: php
tar -c archivos | bzip2 > archivo.tar.bz2


Descomprimir:
Código: php
bzip2 -dc archivo.tar.bz2 | tar -xv

ó
Código: php
tar jvxf archivo.tar.bz2 (versiones recientes de tar)


Ver contenido:
Código: php
bzip2 -dc archivo.tar.bz2 | tar -tv



.zip (zip)
Comprimir:
Código: php
zip archivo.zip 


Descomprimir:
Código: php
unzip archivo.zip


Ver contenido:
Código: php
unzip -v archivo.zip



.lha (lha)
Comprimir:
Código: php
lha archivo.lha 


Descomprimir:
Código: php
lha -x archivo.lha


Ver contenido:
Código: php
lha -v archivo.lha

ó
Código: php
lha -l archivo.lha


.zoo (zoo)
Comprimir:
Código: php
zoo -a archivo.zoo 


Descomprimir:
Código: php
zoo -x archivo.zoo


Ver contenido:
Código: php
zoo -v archivo.zoo

ó
Código: php
zoo -L archivo.zoo



.rar (rar)
Comprimir:
Código: php
rar -a archivo.rar 


Descomprimir:
Código: php
rar -x archivo.rar


Ver contenido:
Código: php
rar -v archivo.rar

ó
Código: php
rar -l archivo.rar


Visto en: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#4
GNU/Linux / Syntax highlighter en Nano
Abril 02, 2010, 12:30:31 PM
Primero veremos todas las opciones de resaltado disponibles, para esto ejecutamos lo siguiente:

Citarsolarin@Gentoo ~ $ ls /usr/share/nano/
asm.nanorc      groff.nanorc   objc.nanorc    ruby.nanorc
awk.nanorc      html.nanorc    ocaml.nanorc   sh.nanorc
c.nanorc        java.nanorc    patch.nanorc   tcl.nanorc
css.nanorc      man-html       perl.nanorc    tex.nanorc
debian.nanorc   man.nanorc     php.nanorc     xml.nanorc
fortran.nanorc  mutt.nanorc    pov.nanorc
gentoo.nanorc   nanorc.nanorc  python.nanorc

Ahora en la carpeta del usuario al que queremos activar el syntax highlighter creamos o editamos el archivo: .nanorc, yo usare el mismo nano.

Citarnano ~/.nanorc

En mi caso yo agregare las lineas necesarias para resaltar el código en C,python,bash,php,perl,asm,awk y java :

Citarinclude "/usr/share/nano/c.nanorc"
include "/usr/share/nano/python.nanorc"
include "/usr/share/nano/sh.nanorc"
include "/usr/share/nano/php.nanorc"
include "/usr/share/nano/perl.nanorc"
include "/usr/share/nano/asm.nanorc"
include "/usr/share/nano/awk.nanorc"
include "/usr/share/nano/java.nanorc"

Mas Info:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#5
Código: c
#include <stdio.h>  //std I/O
#include <string.h>   //manejo de strings
#include <stdlib.h>   //malloc
#include <netdb.h>  //gethostbyname, structs, recv,send, ...
#include <unistd.h>  //close


#define PORT 80
#define BUFSIZE 1024

int main(int argc, char *argv[])
{
int mi_socket;
struct sockaddr_in *con;
struct hostent *he;
char buffer[BUFSIZE];
char peticion[100];
int i;

if (argc != 3)
{
  fprintf(stderr,"Parametros incorrectos:\nModo de uso: %s <host> <path>\n",argv[0]);
fprintf(stderr,"Ejemplo    : %s www.web.com index.php\n",argv[0]);
  exit(1);
}
sprintf(peticion,"GET /%s/ HTTP/1.0\r\nHost:%s\r\nUser-agent:Mozilla 5.0 Compatible\r\n\r\n",argv[2],argv[1]);

fprintf(stdout,"#===========#Request:#============#\n");
fprintf(stdout,"%s\n",peticion);
fprintf(stdout,"#=================================#\n");
mi_socket=socket(AF_INET,SOCK_STREAM,0);

if(mi_socket==-1)
{
fprintf(stderr,"->Error al crear el socket\n");
exit(1);
}
fprintf(stdout,"->Socket creado\n");
if ((he=gethostbyname(argv[1])) == NULL)
{
       fprintf(stderr,"->Error al obtener informacion de la maquina\n");   
       exit(1);
}
con = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in *));
con->sin_family = AF_INET;
con->sin_port = htons(PORT);
con->sin_addr = *((struct in_addr *)he->h_addr);
memset(con->sin_zero,0,8);

if (connect(mi_socket, (struct sockaddr *)con,sizeof(struct sockaddr)) == -1)
{
       fprintf(stderr,"->Error al conectar\n");
       exit(1);
}
fprintf(stdout,"->Socket conectado\n");
send(mi_socket, peticion, strlen(peticion), 0);
fprintf(stdout,"->Peticion enviada\n");
fprintf(stdout,"->Recibiendo respuesta...\n\n");
memset(buffer, 0, sizeof(buffer));
while((i=recv(mi_socket, buffer, BUFSIZE, 0))>0)
{
   fprintf(stdout,"%s",buffer);
   memset(buffer, 0, i); //seteo lo que use del buffer en 0
}
//free(con);     
close(mi_socket);
fprintf(stdout,"->Conexion cerrada\n");
return 0;
}


Citargcc code.c -o code
#6
Cita de: S[e]C
En criptografía, un cifrado César, también conocido como cifrado por desplazamiento, es una de las técnicas de codificación más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra tres posiciones más adelante en el alfabeto. Por ejemplo, la A sería sustituida por la D (situada 3 lugares a la derecha de la A ), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales.
El cifrado César muchas veces es parte componente de sistemas más complejos de codificación, como el cifrado Vigenère, e incluso tiene aplicación en el sistema ROT13.

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


Nota:
Como dice wikipedia el cifrado César es del tipo de cifrados por desplazamiento ( los mas simple jeje), en este caso yo lo eh implementado con un desplazamiento de tres posiciones, si se desea cambiar esto debe modificarse directamente la cadena cifrado y realizar el dezplazamiento deseado.

Código: c

#include <stdio.h>
#include <string.h>


// cadenas referenciadoras para el mensaje original y cifrado
char *alfabeto="abcdefghijklmnñopqrstuvwxyz";
char *cifrado ="DEFGHIJKLMNÑOPQRSTUVWXYZABC";

//Prototipo de funciones para cifrar y decibrar el texto
char* cifra(char*);
char* descifra(char*);

//Funcion principal para probar el uso de las funciones
int main(void)
{
  char cadena[300];
  char *res;
  fprintf(stdout,"Ingrese texto a cifrar\t:\n");
  fscanf(stdin,"%s",cadena);
  res=cifra(cadena);
  fprintf(stdout,"\nLa cadena Cifrada es\t:%s\n\n",res);
  res=descifra(res);
  fprintf(stdout,"La cadena Desifrada es\t:%s",res);
  getchar();
  getchar();
  return 0;
}

//Funcion que cifra el mensaje
char* cifra(char *text)
{
    int i,j;
    for(j=0;j<strlen(text);j++)
    {
      for(i=0;i<strlen(alfabeto);i++)
      {
         if(*(text+j)==*(alfabeto+i))
         {
         *(text+j)=*(cifrado+i);
         }
      }
    }
    return text;
}

//Funcion que descifra el mensaje
char* descifra(char *text)
{
    int i,j;
    for(j=0;j<strlen(text);j++)
    {
      for(i=0;i<strlen(alfabeto);i++)
      {
         if((*(text+j))==*(cifrado+i))
         {
         *(text+j)=*(alfabeto+i);
         }
      }
    }
    return text;
}

#7
Códigos Fuentes / [C] Code/Decode Cifrado Garbo
Marzo 31, 2010, 03:28:05 PM
CitarJuan Pujol García (Barcelona, España, 14 de febrero de     1912 - Caracas, Venezuela, 10 de octubre de 1988) conocido por su     nombre en clave británico Garbo, y por su nombre en     clave alemán Arabel, fue un agente doble español     que desempeñó un papel clave en el éxito del Desembarco de     Normandía al final de la Segunda Guerra Mundial. La información     falsa que Pujol proporcionó a Alemania ayudó a convencer a Hitler     de que el ataque principal sería más tarde y en otro lugar, lo que     resultó en su decisión de reducir las tropas en la zona del     desembarco.

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

Durante su desempeño como agente doble Garbo empleo entre otros
algoritmos de cifrado, el que veremos a continuación:

La base del algoritmo son los siguiente alfabetos:



Para cifrar un texto mediante este algoritmo se siguen los siguientes pasos:

Supondremos la siguiente cadena: "ARABEL"

1º- Se considera como indice de cada letra de la cadena su respectiva
posicion, es decir:



2º- se Obtiene para cada letra, su indice módulo 5, y para indices
menores que cinco solo se considera su indice, es decir:



3º-
Ahora dependiendo el modulo obtenido para cada letra, se decide con
que alfabeto sera cifrada(este proceso se realiza dos veces, se cifra cada caracter dos veces), por lo tanto para nuestro ejemplo seria:



Links sobre el tema: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Una implementacion del cifrado y descifrado del mismo algoritmo en lenguaje C por mi, aca:

Código: c

/**********************************************
* Nombre        : garbo.c
* Author        : S[e]C
* Date          : 30-06-09
* Description   : Code/Decode Cifrado Garbo
***********************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/*
* Alfabeto original y los 5 alfabetos de cifrado
*/

char alfabeto[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
char alf1[]    ="GHIJKLMNOPQRSTUVWXYZABCDEFghijklmnopqrstuvwxyzabcdef";
char alf2[]    ="EFGHIJKLMABCDNOPQRSTZUVWXYefghijklmabcdnopqrstzuvwxy";
char alf3[]    ="AZYBXCWDVEFUTGHSRIJQKPLMONazybxcwdvefutghsrijqkplmon";
char alf4[]    ="QRSTUVWXYZBACEDFHGJILKMONPqrstuvwxyzbacedfhgjilkmonp";
char alf5[]    ="DEGFIHJABCKOLMNPRQTSVUZXYWdegfihjabckolmnprqtsvuzxyw";

//Prototipo funciones cifrado y descifrado
void cifra(char *text);
void descifra(char *text);

int main(void)
{
    char cad[50];
    fprintf(stdout,"Cadena a cifrar\t:");
    fscanf(stdin,"%s",cad);
    cifra(cad);    //primera pasada
    cifra(cad);    //segunda pasada
    printf("Cadena codificada\t:%s\n",cad);
    descifra(cad); //revierte primera pasada
    descifra(cad); //revierte segunda pasada
    printf("\nCadena decodificada\t:%s\n",cad);
    setbuf(stdin,NULL);
    getchar();
    return 0;
}

void cifra(char *text)
{
     int i,k,modulo;
     for(i=0;*(text+i)!='\0';i++)
     {
       modulo=(i+1)%5; /* Obtengo el modulo de la posicion+1  ya que se considera desde
                          la letra Nº 1 de la cadena, no la posicion numero 0 de ella. */
          switch(modulo)
          {
                       
           case 0: //si el modulo es 0 uso el alfabeto 5
                for(k=0;*(alfabeto+k)!='\0';k++) //miro cada letra del alfabeto
                {
                   if(*(text+i)==*(alfabeto+k))  //y comparo con la primera letra de la cadena
                      {                          //si son iguales:
                        *(text+i)=*(alf5+k);     //le asigno el valor del alfabeto de cifrado correspondiente(alfX)
                        break;                   //salgo del ciclo.
                      }
                }
                break;
                       
           case 1:  //si el modulo es 1 uso el alfabeto 1
                for(k=0;*(alfabeto+k)!='\0';k++)
                {
                   if(*(text+i)==*(alfabeto+k))
                      {
                        *(text+i)=*(alf1+k);
                        break;
                      }
                     
                }
                break;
           case 2:  // si el modulo es 2 uso el alfabeto 2
                for(k=0;*(alfabeto+k)!='\0';k++)
                {
                   if(*(text+i)==*(alfabeto+k))
                      {
                        *(text+i)=*(alf2+k);
                        break;   
                      }
                       
                }
                break;
           case 3: // si el modulo es 3 uso el alfabeto 3
                for(k=0;*(alfabeto+k)!='\0';k++)
                {
                   if(*(text+i)==*(alfabeto+k))
                      {
                        *(text+i)=*(alf3+k);
                        break;
                      }
                       
                }
                break;
           case 4: // si el modulo es 4 uso el alfabeto 4
                for(k=0;*(alfabeto+k)!='\0';k++) 
                {
                   if(*(text+i)==*(alfabeto+k))
                      {
                        *(text+i)=*(alf4+k); 
                        break;
                      }
                }
                break;
           default: // si el modulo es 4 uso el alfabeto 4
                for(k=0;*(alfabeto+k)!='\0';k++) 
                {
                   if(*(text+i)==*(alfabeto+k))
                      {
                        *(text+i)=*(alf5+k); 
                        break;
                      }
                }
          }
     }
}

void descifra(char *text)
{
     int i,k,modulo;
     for(i=0;*(text+i)!='\0';i++)
     {
       modulo=(i+1)%5;  //Obtengo el modulo, IDEM que en el proceso de cifrado
          switch(modulo)
          {
           case 0: //si el modulo es 0 decodifico la letra buscando en el alfabeto 5
                for(k=0;*(alf5+k)!='\0';k++)     //miro cada letra del alfabeto X
                {                                //( X = alfabeto correspondiente al modulo )
                   if(*(text+i)==*(alf5+k))      //comparo con la primera letra de la cadena
                      {                          //si son iguales:
                        *(text+i)=*(alfabeto+k); //Le asigno la letra correspondiente
                        break;                   //en el alfabeto Original, y salgo del ciclo.
                      }
                }
                break;
                       
           case 1: //si el modulo es 0 decodifico la letra buscando en el alfabeto 1
                for(k=0;*(alf1+k)!='\0';k++)
                {
                   if(*(text+i)==*(alf1+k))
                      {
                        *(text+i)=*(alfabeto+k);
                        break;
                      }
                     
                }
                break;
           case 2: //si el modulo es 0 decodifico la letra buscando en el alfabeto 2
                for(k=0;*(alf2+k)!='\0';k++)
                {
                   if(*(text+i)==*(alf2+k))
                      {
                        *(text+i)=*(alfabeto+k);
                        break;   
                      }
                       
                }
                break;
           case 3: //si el modulo es 0 decodifico la letra buscando en el alfabeto 3
                for(k=0;*(alf3+k)!='\0';k++)
                {
                   if(*(text+i)==*(alf3+k))
                      {
                        *(text+i)=*(alfabeto+k);
                        break;
                      }
                       
                }
                break;
           case 4: //si el modulo es 0 decodifico la letra buscando en el alfabeto 4
                for(k=0;*(alf4+k)!='\0';k++)
                {
                   if(*(text+i)==*(alf4+k))
                      {
                        *(text+i)=*(alfabeto+k); 
                        break;
                      }
                       
                }
          }
     }
}