Muye buena explicacion y buen tutorial, gracias por compartir
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.
#21
Hacking / Re:Curso Metasploit - Part. 5.1 – Creando un paylodad basico
Mayo 03, 2018, 09:53:59 AM #22
Informática Forense / Re:I Mini Reto - Criptográfico
Abril 28, 2018, 11:44:16 PM
ROT22 ASESINOTIENESLASMANOSMANCHADASDESANGREAOTLAMZZ
#23
Criptografía / Taller de Criptografia con Algoritmos en java
Abril 22, 2018, 01:01:03 PM
Hola compañer@s, hoy quiero hacer este taller ya que me gusta mucho todo este tema y quisiera compartirles algo de lo que se, se trata de un taller de criptografia con algoritmos paso a paso hechos por mi, de diferentes tipos de cifrado empezando por los clasicos hasta llegar a los actuales (en algunos todavia estoy trabajando, los mas complejos), en este taller enseñare paso a paso como codear estos algoritmos con ejemplos graficos, ademas de diversas actividades para los mas curiosos y que quieran aprender de mas.
Sugerencia saber de java (los algoritmos seran codeados en este lenguaje) y algo de estructura de datos (arrays,matrices,listas,codigo ASCII), bueno sin mas que decirles voy a comenzar.
Aca voy a colocar todos los algoritmos: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Quiero decir algo y esque en esto de la programacion hay muchas formas de hacer algo, esta es mi forma los algortimos no estan hechos por un programador profesional ni nada, soy un estudiante todavia pero me gusta mucho esto, asi que quise compartirlo.
Empecemos definiendo que es, para que se utiliza la criptografia y sus objetivos:
- CRIPTOGRAFIA
La palabra Criptografía proviene del griego "kryptos" que significa oculto, y "graphia", que significa escritura, y su definición según el dicccionario es "Arte de escribir con clave secreta o de un modo enigmático". La Criptografía es una técnica, o más bien un conjunto de técnicas, que originalmente tratan sobre la protección o el ocultamiento de la información frente a observadores no autorizados. Es parte de un campo de estudios que trata las comunicaciones secretas, Estas técnicas se utilizan tanto en el arte como en la ciencia y en la tecnología. Por tanto, el único objetivo de la criptografía era conseguir la confidencialidad de los mensajes, para lo cual se diseñaban sistemas de cifrado y códigos.
La criptografia es algo muy antiguo, no es algo que nace con la informatica, si no que era usada miles de años antes por egipcios, romanos,tambien en la primera y segunda guerra mundial.
Aca les dejo una buena introduccion a la criptografia si quieren saber mas a fondo y un poco de su historia, les recomiendo que revisen los links que les dejo a lo largo del taller para complementar lo que aca esta escrito.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Wikipedia: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- OBJETIVOS DE LA CRIPTOGRAFIA
En la criptografia tenemos 3 objetivos principales, es lo que se quiere conseguir despues de aplicar alguna tecnica criptografica a alguna informacion o comunicacion
Nota:
No me extendere tanto explicando todo esto ya que en los link que les deje esta toda esa informacion y aun mas(en google podrian buscar criptografia y saldrian millones de resultados), el fin de este taller es entender como funcionan las tecnicas y poder codearlos
- TIPOS DE CRIPTOGRAFIA
Mas informacion
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
Bueno muchachos ya despues de entender estos conceptos y de que estamos hablando vamos a empezar con algunos algoritmos de la criptografia clasica
- CRIPTOGRAFIA CLASICA
Son las tecnicas utilizadas antiguamente por romanos, egipcios y guerras que pasaron hace muchos años y no querian que sus mensajes fueran revelados, entre estas tecnicas se encuentran:
Cifrado Cesar
Segun Wikipedia:
En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de cifrado 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 un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, 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.
Como se ve en la imagen solo se trata de correr un caracter 3 posiciones mas adelante, bueno y ahora si empezamos a codear:
Voy a crear una Clase main que se llame CifradoCesar, luego creare un scanner para leer por medio del teclado y luego pedire el mensaje, de esta forma:
Listo, ahora voy a crear una funcion que se llame Cifrar_Cesar y me reciba por parametros un mensaje que sera tipo String, esta funcion se encarga de convertir el mensaje en un array de caracteres (char) para luego por medio el codigo ascii obtener el numero del caracter y sumarle 3, por ejemplo la letra 'a' en codigo ascci sera el numero 97 y si a ese numero le sumamos 3, 97+3 = 100;
y 100 es el codigo ascii de la letra 'd' y como se ve en la imagen anterior se corre 3 letras, y de esta manera vamos a realizar el cifrado caracter por caracter y luego lo concatenamos a un String que sera nuestra salida de la funcion o cipher (texto ya cifrado)
Tabla de CODIGO ASCII: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Listo ya tenemos nuestra funcion que cifra, la podre a prueba cifrando el mensaje: Alan Mathison Turing
Y nos dio como resultado: Dodq#Pdwklvrq#Wxulqj
que si lo revisamos nos damos cuenta que si hace lo que esperabamos,
la letra A + 3posiciones = letra D, luego la letra 'l' + 3 posiciones = letra 'o' y asi sucesivamente, listo ya tenemos nuestra funcion de cifrar.
Bueno ahora necesitamos una funcion que coja el cipher(texto cifrado) y nos devuelva nuestro mensaje normal
Para esto creare una funcion que se llamara Descifrar_Cesar y me reciba por parametro un String que sera el cipher para luego hacer casi lo anterior de la funcion cifrar pero en vez de sumarle 3 al codigo ascii le voy a restar 3 para volverlo a la posicion normal, no la comentare tanto porque hace casi lo mismo que la anterior solo que no suma sino resta posiciones
Listo ya tenemos nuestras dos funciones de cifrar y descifrar vamos a ponerlas a prueba!, en el main pido un mensaje y lo mando a cifrar, luego ese mensaje cifrado lo mando a descifrar y nos debe mostrar nuestro texto cifrado y nuestro texto normal luego de pasar por estas funciones, quedaria algo asi:
y al ejecutarlo daria este resultado:
Listo ya tenemos nuestro algoritmo de Cifrado del Cesar!
EJERCICIO #1
Utilize el algoritmo para descifra este mensaje: r{>tzA-r??n-y|p|
Pero ahora en vez de correr solo 3 caracteres lo tendra que hacer corriendo 13 caracteres, igual para descifrar, suerte!
Cifrado Polibio
Se trata de un algoritmo trivial, donde cada letra del alfabeto es reemplazada por las coordenadas de su posición en un cuadrado. Es un caso particular de transposición mono-alfabética. osea tenemos una matriz llena de caracteres y vamos por cada caracter del mensaje y el cipher resultante seran las posiciones del caracter en la matriz
Link:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Por ejemplo tenemos esta matriz llena de caracteres, (el abecedario)
Por ejemplo si queremos cifrar el texto HOLA en base a esta matriz lo que tendriamos que hacer seria ubicar la posicion de cada letra del mensaje , la letra H se encuentra en la fila 2 columna 3 entonces nuestro ciper seria 23 por ahora, luego vamos con la O que esta en la fila 3 - columna 4, nuestro cipher ahoa sera 23 33 y asi con todas las letras del mensaje en base a la posicion en que se encuentren en la matriz
HOLA = 23 34 31 11
Para que el mensaje sea correctamente cifrado, en la matriz se deben encontrar todos los caracteres que lo componten, osea en este ejemplo si nuestro mensaje hubiera llevado alguna numero no cifraria bien ya que en la matriz no hay ningun numero y asi, pero se puede hacer una matriz mas grande, para el algoritmo utilizare una de 7x7 para agregar los numeros y algunos signos
Listo sabiendo esto ahora empezaremos a codear:
Voy a crear una clase main llamada CifradoPolibio en la cual como anteriormente lo hicimos voy a pedir un mensaje:
Bueno y como este tipo de cifrado requiere una matriz voy a crear la mia, que sera de 7*7 , contendre numeros y signos, quedaria algo asi:
Listo ya tenemos nuestra matriz y en base a esta todos nuestros mensajes se van a cifrar
Bueno ahora vamos a crear una funcion que se llame Cifrar_Polibio que nos reciba por parametro un String que sera nuestro mensaje y una matriz de caracteres char [][], y en base a estos datos cifrar
y listo ya tendremos nuestra funcion que cifra, ahora haremos el paso inverso, vamos a cojer el cipher(texto cifrado) y como en este estan las posiciones de el caracter del mensaje en la matriz solo seria ir a la matriz y buscar en esa posicion y alla esta la letra a la que corresponde, vamos a crear una funcion que nos haga esto, la funcion recibe un cipher (texto cifrado), que sera un array de char, el mismo que la funcion cifrar retorna y una matriz de caracteres como parametros:
Y listo ya tendriamos nuestras dos funciones listas, mandamos a cifrar y descifrar en el main y nos quedari algo asi:
(no olviden que en java las posiciones empiezan en 0, ademas de esto cree una funcion imprimir para ver la matriz
Vamos a utilizarlo cifrando el mensaje: en1gm4 programa
(recuerden que los caracteres del mensaje deben estar en la matriz si no nunca encontrar la posicion y nos generara error)
nos da como cipher: 04 16 36 06 15 42 54 22 24 21 06 24 00 15 00
y si revisamos la posicion: fila 0 columna 4 = e , y si lo hacemos con todo el cipher nos daremos cuenta que si hace lo que queriamos, listo!
EJERCICIO #2
Utilize el algoritmo para descifra este mensaje:
00 14 06 30 16 54 03 11 00 54 04 16 02 21 16 26 24 00 24 00 25 54 14 21 25 54 23 30 04 54 01 30 25 02 00 25
En base a la matriz que se ve anteriormente en el programa, a mano!
Cifrado Playfair
Les dejare un video para que entiendan este tipo de cifrado ya que graficamente se entiende mucho mejor que si me pongo a copiar aca toda la teoria, necesito que entiendan bien como funciona para luego empezar a codearlo
Basicamente el cifrado consiste en una matriz con la que se cifra, la matriz se genera en base a la clave ya que esta se escribe en la matriz sin caracteres repetidos y luego si se termina de llenar la matriz con el resto de caracteres del abecedario sin repetir, numeros y signos si se desea
Se parte el mensaje en parejas por ejemplo HOLA quedaria HO LA y asi con todo el mensaje, luego ubicamos las dos letras en la matriz y miramos:
- Si estan en la misma fila se le suma una posicion a la columna de cada letra
- Si estan en la misma Columna se le suma una posicion a la fila de cada letra
-Si no estan ni en la misma Columna ni en la misma fila, se coloca su diagonal opuesta
Y listo sabiendo como funciona este cifrado vamos a empezar, primero voy a crear una clase main llamada CifradoPlayfair y hare lo mismo de siempre pedire un mensaje pero ahora tambien necesitaremos una clave asi que tambien la pediremos, seria algo asi:
Bueno ya teniendo estos datos ahora voy a crear una funciona que se llame Cifrado_Playfair que recibe como parametro el mensaje y la clave, bueno antes de concentrarnos en esta funcion tambien eh creado unas funciones auxiliares que me ayudan a generar la matris y a generar las parejas de caracteres del mensaje
Con esta funcion genero la matriz en base a la clave:
y Listo con esta funcion ya generamos nuestra matriz en base a la clave, ahora necesitamos una funcion que nos forme cadenas de caracteres, si la cadena tiene un tamaño impar se le agrega el caracter 'x' al final para que sea par y tambien sabiendo que si hay dos caractere repetidos coloque una x en la mitad, por ejemplo:
LLAVE -> LXLAVE
para que en el momento de cifrar no queden cifras iguales pegadas y pues un sabrian que es una letra que se repite como la ll o la rr algo asi.
Esta funcion recibe por parametro el mensaje y nos devuelve una matris de parejas de caracteres con la anterior regla, una salvedad, en los videos dice que al mensaje se le deben eliminar los espacios, yo en la matriz ingrese en caracter espacio para no tener que hacer esto y que los mensajes se descifren igual como el original:
Listo ya tenemos dos funciones listas, pero ahora vamos a necesitar ayuda de una tercera funcion que se va a encargar de darme la posicion de un caracter en la matriz para poder aplicar las reglas de que si esta en la misma fila o columna... etc
Bueno la funcion me recibe como parametros un caracter que sera en que vamos a buscar y una matriz en la cual vamos a buscar el caracter, quedaria algo asi:
y Listo ya tenemos nuestras funciones listas para utilizar en nuestra funcion de cifrar, que nos recibe un mensaje y una clave como parametros, genera la matriz en base a la clave, genera las parejas de caracteres y va por cada pareja de caracteres aplicando las reglas, quedaria algo asi:
Y listo ya tendriamos nuestra funcion de cifrar lista!, ahora vamos a programar nuestra funcion de descifrar que hace casi lo mismo que la anterior pero de para atras xd, esta funcion nos recibe como parametros el mensaje y la clave, quedari algo asi
Aca la funcion imprimir por si les genera error :v, es una simple funcion que me imprime una matriz:
Y bueno ya tendriamos nuestra funcion de cifrado y descifrado compañer@s!
el programa completo quedaria algo asi:
Listo ahora lo pondre a funcionar con el mensaje: colombia tierra querida
y con la clave: user_$
(recuerden que los caracteres del mensaje deben estar en la matriz, para este taller no utilizare nada de mayusculas ni simbolos raros)
y me da como resultado:
Cipher: hkmpjfpis1da_w_u.tsrafie
Mensaje descifrado: colombia tierxra querida
queda tierxra porque le pusimos la regla de que en las repetidas colocara una x en la mitad recuerden,
Y listo ya tendriamos otro algoritmo listo!
EJERCICIO #e
Utilize el algoritmo para descifrar este mensaje:
vc4kb2b1sk%kpsebk_nx1cqv
Esta es la clave: en1gm4
Cifrado XOR
Bueno si han llegado hasta aca ya saben masomenos como funciona todo ese mundo de la criptografia, mueva alla, corrase tantos puestos y asi, ahora vamos a implementar otro algoritmo de cifrado pero esta vez utilizando una compuerta logica XOR
primero que todo tenemos que saber que es una compuerta logica XOR y antes de eso tener conceptos de numeros binarios ya que estas compuertas se les aplican a los binarios,
sabemos que toda la informacion en nuestra computadora por debajo al final no son las que 1 y 0;
Les dejare esta guia para que aprendan que es un bit y un byte, los que ya saben la pueden obviar
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Bueno ya sabiendo esto que 1 byte representa 8 bits y lo demas vamos a estudiar que es una compuerta logica, para lo cual les dejo aca la informacion, no la colocare aca porque seria nada mas copiar y pegar y ps para que.
CompuertaXOR
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (pueden buscar informacion adicional si no quedo muy claro es importante que sepan como funciona)
bueno despues de saber como funciona esta compuerta tenemos esta tabla de verdad que nos ayuda a entender mejor:
Bueno ya sabiendo esto y como funciona ahora si vamos a proceder a codear el algoritmo:
Primero debemos saber que un caracter es representado por un byte, osea 8 bits que al sumarlos por medio de codigo binario nos dara el codigo ascii del caracter
lean esto para que entiendan como funciona el cifrado xor:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
por cuestiones de tiempo no explicare este algoritmo paso a paso si no que mostrare su funcionamiento, basicamente lo que hace es convertir el mensaje en un arreglo de caracteres, obtiene el codigo binario de ese caracter, luego convierte la clave en un arreglo de caracter y obtiene el binario de cada caracter y le aplica una compuerta XOR a estos dos binarios y para descrifrar hace lo mismo con el mensaje cifrado y la clave
Lo pobrare con el mensaje: Colombia
y la clave: hacking
me da como cipher: +
y luego de descifrar: Colombia
Bueno amigos esto es todo por hoy, aca no acaba este post seguire agregando algoritmos mas complejos con el paso del tiempo, espero les sirva de algo, ami me sirvio para profundizar mis conocimientos, me gusta todo esto de la criptografia y pues si esto lo ve algun programador lo podria utilizar en sus desarrollos para mejorar su seguridad, un saludo desde Colombia!
Sugerencia saber de java (los algoritmos seran codeados en este lenguaje) y algo de estructura de datos (arrays,matrices,listas,codigo ASCII), bueno sin mas que decirles voy a comenzar.
Aca voy a colocar todos los algoritmos: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Quiero decir algo y esque en esto de la programacion hay muchas formas de hacer algo, esta es mi forma los algortimos no estan hechos por un programador profesional ni nada, soy un estudiante todavia pero me gusta mucho esto, asi que quise compartirlo.
TALLER DE CRIPTOGRAFIA
Empecemos definiendo que es, para que se utiliza la criptografia y sus objetivos:
- CRIPTOGRAFIA
La palabra Criptografía proviene del griego "kryptos" que significa oculto, y "graphia", que significa escritura, y su definición según el dicccionario es "Arte de escribir con clave secreta o de un modo enigmático". La Criptografía es una técnica, o más bien un conjunto de técnicas, que originalmente tratan sobre la protección o el ocultamiento de la información frente a observadores no autorizados. Es parte de un campo de estudios que trata las comunicaciones secretas, Estas técnicas se utilizan tanto en el arte como en la ciencia y en la tecnología. Por tanto, el único objetivo de la criptografía era conseguir la confidencialidad de los mensajes, para lo cual se diseñaban sistemas de cifrado y códigos.
La criptografia es algo muy antiguo, no es algo que nace con la informatica, si no que era usada miles de años antes por egipcios, romanos,tambien en la primera y segunda guerra mundial.
Aca les dejo una buena introduccion a la criptografia si quieren saber mas a fondo y un poco de su historia, les recomiendo que revisen los links que les dejo a lo largo del taller para complementar lo que aca esta escrito.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Wikipedia: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- OBJETIVOS DE LA CRIPTOGRAFIA
En la criptografia tenemos 3 objetivos principales, es lo que se quiere conseguir despues de aplicar alguna tecnica criptografica a alguna informacion o comunicacion
- Confidencialidad:
- Es decir, garantiza que la información sea accesible únicamente a personal autorizado.
- Integridad:
- Grantiza que la informacion no sea modificada y se mantanga tal cual se creo
- Autentificacion:
Nota:
No me extendere tanto explicando todo esto ya que en los link que les deje esta toda esa informacion y aun mas(en google podrian buscar criptografia y saldrian millones de resultados), el fin de este taller es entender como funcionan las tecnicas y poder codearlos
- TIPOS DE CRIPTOGRAFIA
- Criptografia Simetrica:
- Criptografia Asimetrica:
- Criptografia Hibrida:
Mas informacion
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
Bueno muchachos ya despues de entender estos conceptos y de que estamos hablando vamos a empezar con algunos algoritmos de la criptografia clasica
- CRIPTOGRAFIA CLASICA
Son las tecnicas utilizadas antiguamente por romanos, egipcios y guerras que pasaron hace muchos años y no querian que sus mensajes fueran revelados, entre estas tecnicas se encuentran:
Cifrado Cesar
Segun Wikipedia:
En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de cifrado 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 un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, 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.
Como se ve en la imagen solo se trata de correr un caracter 3 posiciones mas adelante, bueno y ahora si empezamos a codear:
Voy a crear una Clase main que se llame CifradoCesar, luego creare un scanner para leer por medio del teclado y luego pedire el mensaje, de esta forma:
Listo, ahora voy a crear una funcion que se llame Cifrar_Cesar y me reciba por parametros un mensaje que sera tipo String, esta funcion se encarga de convertir el mensaje en un array de caracteres (char) para luego por medio el codigo ascii obtener el numero del caracter y sumarle 3, por ejemplo la letra 'a' en codigo ascci sera el numero 97 y si a ese numero le sumamos 3, 97+3 = 100;
y 100 es el codigo ascii de la letra 'd' y como se ve en la imagen anterior se corre 3 letras, y de esta manera vamos a realizar el cifrado caracter por caracter y luego lo concatenamos a un String que sera nuestra salida de la funcion o cipher (texto ya cifrado)
Tabla de CODIGO ASCII: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Listo ya tenemos nuestra funcion que cifra, la podre a prueba cifrando el mensaje: Alan Mathison Turing
Y nos dio como resultado: Dodq#Pdwklvrq#Wxulqj
que si lo revisamos nos damos cuenta que si hace lo que esperabamos,
la letra A + 3posiciones = letra D, luego la letra 'l' + 3 posiciones = letra 'o' y asi sucesivamente, listo ya tenemos nuestra funcion de cifrar.
Bueno ahora necesitamos una funcion que coja el cipher(texto cifrado) y nos devuelva nuestro mensaje normal
Para esto creare una funcion que se llamara Descifrar_Cesar y me reciba por parametro un String que sera el cipher para luego hacer casi lo anterior de la funcion cifrar pero en vez de sumarle 3 al codigo ascii le voy a restar 3 para volverlo a la posicion normal, no la comentare tanto porque hace casi lo mismo que la anterior solo que no suma sino resta posiciones
Listo ya tenemos nuestras dos funciones de cifrar y descifrar vamos a ponerlas a prueba!, en el main pido un mensaje y lo mando a cifrar, luego ese mensaje cifrado lo mando a descifrar y nos debe mostrar nuestro texto cifrado y nuestro texto normal luego de pasar por estas funciones, quedaria algo asi:
y al ejecutarlo daria este resultado:
Listo ya tenemos nuestro algoritmo de Cifrado del Cesar!
EJERCICIO #1
Utilize el algoritmo para descifra este mensaje: r{>tzA-r??n-y|p|
Pero ahora en vez de correr solo 3 caracteres lo tendra que hacer corriendo 13 caracteres, igual para descifrar, suerte!
Cifrado Polibio
Se trata de un algoritmo trivial, donde cada letra del alfabeto es reemplazada por las coordenadas de su posición en un cuadrado. Es un caso particular de transposición mono-alfabética. osea tenemos una matriz llena de caracteres y vamos por cada caracter del mensaje y el cipher resultante seran las posiciones del caracter en la matriz
Link:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Por ejemplo tenemos esta matriz llena de caracteres, (el abecedario)
Por ejemplo si queremos cifrar el texto HOLA en base a esta matriz lo que tendriamos que hacer seria ubicar la posicion de cada letra del mensaje , la letra H se encuentra en la fila 2 columna 3 entonces nuestro ciper seria 23 por ahora, luego vamos con la O que esta en la fila 3 - columna 4, nuestro cipher ahoa sera 23 33 y asi con todas las letras del mensaje en base a la posicion en que se encuentren en la matriz
HOLA = 23 34 31 11
Para que el mensaje sea correctamente cifrado, en la matriz se deben encontrar todos los caracteres que lo componten, osea en este ejemplo si nuestro mensaje hubiera llevado alguna numero no cifraria bien ya que en la matriz no hay ningun numero y asi, pero se puede hacer una matriz mas grande, para el algoritmo utilizare una de 7x7 para agregar los numeros y algunos signos
Listo sabiendo esto ahora empezaremos a codear:
Voy a crear una clase main llamada CifradoPolibio en la cual como anteriormente lo hicimos voy a pedir un mensaje:
Bueno y como este tipo de cifrado requiere una matriz voy a crear la mia, que sera de 7*7 , contendre numeros y signos, quedaria algo asi:
Listo ya tenemos nuestra matriz y en base a esta todos nuestros mensajes se van a cifrar
Bueno ahora vamos a crear una funcion que se llame Cifrar_Polibio que nos reciba por parametro un String que sera nuestro mensaje y una matriz de caracteres char [][], y en base a estos datos cifrar
y listo ya tendremos nuestra funcion que cifra, ahora haremos el paso inverso, vamos a cojer el cipher(texto cifrado) y como en este estan las posiciones de el caracter del mensaje en la matriz solo seria ir a la matriz y buscar en esa posicion y alla esta la letra a la que corresponde, vamos a crear una funcion que nos haga esto, la funcion recibe un cipher (texto cifrado), que sera un array de char, el mismo que la funcion cifrar retorna y una matriz de caracteres como parametros:
Y listo ya tendriamos nuestras dos funciones listas, mandamos a cifrar y descifrar en el main y nos quedari algo asi:
(no olviden que en java las posiciones empiezan en 0, ademas de esto cree una funcion imprimir para ver la matriz
Vamos a utilizarlo cifrando el mensaje: en1gm4 programa
(recuerden que los caracteres del mensaje deben estar en la matriz si no nunca encontrar la posicion y nos generara error)
nos da como cipher: 04 16 36 06 15 42 54 22 24 21 06 24 00 15 00
y si revisamos la posicion: fila 0 columna 4 = e , y si lo hacemos con todo el cipher nos daremos cuenta que si hace lo que queriamos, listo!
EJERCICIO #2
Utilize el algoritmo para descifra este mensaje:
00 14 06 30 16 54 03 11 00 54 04 16 02 21 16 26 24 00 24 00 25 54 14 21 25 54 23 30 04 54 01 30 25 02 00 25
En base a la matriz que se ve anteriormente en el programa, a mano!
Cifrado Playfair
Les dejare un video para que entiendan este tipo de cifrado ya que graficamente se entiende mucho mejor que si me pongo a copiar aca toda la teoria, necesito que entiendan bien como funciona para luego empezar a codearlo
Videos
Basicamente el cifrado consiste en una matriz con la que se cifra, la matriz se genera en base a la clave ya que esta se escribe en la matriz sin caracteres repetidos y luego si se termina de llenar la matriz con el resto de caracteres del abecedario sin repetir, numeros y signos si se desea
Se parte el mensaje en parejas por ejemplo HOLA quedaria HO LA y asi con todo el mensaje, luego ubicamos las dos letras en la matriz y miramos:
- Si estan en la misma fila se le suma una posicion a la columna de cada letra
- Si estan en la misma Columna se le suma una posicion a la fila de cada letra
-Si no estan ni en la misma Columna ni en la misma fila, se coloca su diagonal opuesta
Y listo sabiendo como funciona este cifrado vamos a empezar, primero voy a crear una clase main llamada CifradoPlayfair y hare lo mismo de siempre pedire un mensaje pero ahora tambien necesitaremos una clave asi que tambien la pediremos, seria algo asi:
Bueno ya teniendo estos datos ahora voy a crear una funciona que se llame Cifrado_Playfair que recibe como parametro el mensaje y la clave, bueno antes de concentrarnos en esta funcion tambien eh creado unas funciones auxiliares que me ayudan a generar la matris y a generar las parejas de caracteres del mensaje
Con esta funcion genero la matriz en base a la clave:
y Listo con esta funcion ya generamos nuestra matriz en base a la clave, ahora necesitamos una funcion que nos forme cadenas de caracteres, si la cadena tiene un tamaño impar se le agrega el caracter 'x' al final para que sea par y tambien sabiendo que si hay dos caractere repetidos coloque una x en la mitad, por ejemplo:
LLAVE -> LXLAVE
para que en el momento de cifrar no queden cifras iguales pegadas y pues un sabrian que es una letra que se repite como la ll o la rr algo asi.
Esta funcion recibe por parametro el mensaje y nos devuelve una matris de parejas de caracteres con la anterior regla, una salvedad, en los videos dice que al mensaje se le deben eliminar los espacios, yo en la matriz ingrese en caracter espacio para no tener que hacer esto y que los mensajes se descifren igual como el original:
Listo ya tenemos dos funciones listas, pero ahora vamos a necesitar ayuda de una tercera funcion que se va a encargar de darme la posicion de un caracter en la matriz para poder aplicar las reglas de que si esta en la misma fila o columna... etc
Bueno la funcion me recibe como parametros un caracter que sera en que vamos a buscar y una matriz en la cual vamos a buscar el caracter, quedaria algo asi:
y Listo ya tenemos nuestras funciones listas para utilizar en nuestra funcion de cifrar, que nos recibe un mensaje y una clave como parametros, genera la matriz en base a la clave, genera las parejas de caracteres y va por cada pareja de caracteres aplicando las reglas, quedaria algo asi:
Y listo ya tendriamos nuestra funcion de cifrar lista!, ahora vamos a programar nuestra funcion de descifrar que hace casi lo mismo que la anterior pero de para atras xd, esta funcion nos recibe como parametros el mensaje y la clave, quedari algo asi
Aca la funcion imprimir por si les genera error :v, es una simple funcion que me imprime una matriz:
Y bueno ya tendriamos nuestra funcion de cifrado y descifrado compañer@s!
el programa completo quedaria algo asi:
Listo ahora lo pondre a funcionar con el mensaje: colombia tierra querida
y con la clave: user_$
(recuerden que los caracteres del mensaje deben estar en la matriz, para este taller no utilizare nada de mayusculas ni simbolos raros)
y me da como resultado:
Cipher: hkmpjfpis1da_w_u.tsrafie
Mensaje descifrado: colombia tierxra querida
queda tierxra porque le pusimos la regla de que en las repetidas colocara una x en la mitad recuerden,
Y listo ya tendriamos otro algoritmo listo!
EJERCICIO #e
Utilize el algoritmo para descifrar este mensaje:
vc4kb2b1sk%kpsebk_nx1cqv
Esta es la clave: en1gm4
Cifrado XOR
Bueno si han llegado hasta aca ya saben masomenos como funciona todo ese mundo de la criptografia, mueva alla, corrase tantos puestos y asi, ahora vamos a implementar otro algoritmo de cifrado pero esta vez utilizando una compuerta logica XOR
primero que todo tenemos que saber que es una compuerta logica XOR y antes de eso tener conceptos de numeros binarios ya que estas compuertas se les aplican a los binarios,
sabemos que toda la informacion en nuestra computadora por debajo al final no son las que 1 y 0;
Les dejare esta guia para que aprendan que es un bit y un byte, los que ya saben la pueden obviar
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Bueno ya sabiendo esto que 1 byte representa 8 bits y lo demas vamos a estudiar que es una compuerta logica, para lo cual les dejo aca la informacion, no la colocare aca porque seria nada mas copiar y pegar y ps para que.
CompuertaXOR
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (pueden buscar informacion adicional si no quedo muy claro es importante que sepan como funciona)
bueno despues de saber como funciona esta compuerta tenemos esta tabla de verdad que nos ayuda a entender mejor:
Bueno ya sabiendo esto y como funciona ahora si vamos a proceder a codear el algoritmo:
Primero debemos saber que un caracter es representado por un byte, osea 8 bits que al sumarlos por medio de codigo binario nos dara el codigo ascii del caracter
lean esto para que entiendan como funciona el cifrado xor:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
por cuestiones de tiempo no explicare este algoritmo paso a paso si no que mostrare su funcionamiento, basicamente lo que hace es convertir el mensaje en un arreglo de caracteres, obtiene el codigo binario de ese caracter, luego convierte la clave en un arreglo de caracter y obtiene el binario de cada caracter y le aplica una compuerta XOR a estos dos binarios y para descrifrar hace lo mismo con el mensaje cifrado y la clave
Lo pobrare con el mensaje: Colombia
y la clave: hacking
me da como cipher: +
y luego de descifrar: Colombia
Bueno amigos esto es todo por hoy, aca no acaba este post seguire agregando algoritmos mas complejos con el paso del tiempo, espero les sirva de algo, ami me sirvio para profundizar mis conocimientos, me gusta todo esto de la criptografia y pues si esto lo ve algun programador lo podria utilizar en sus desarrollos para mejorar su seguridad, un saludo desde Colombia!
#24
Dudas y pedidos generales / Re:Se puede subir el volumen con un programa
Abril 15, 2018, 09:59:09 PM
si lo que vas a escuchar lo puede reproducir por google chrome, osea youtube y eso, hay una extension muy buena, se llama volumen master y sirve muy bien
#25
Hacking / Re:Navega Anonimamente y Evita Ataques DDoS Con Este VPN
Abril 05, 2018, 10:57:49 AM
no lo se rick, poca informacion, muchas instrucciones, no quiero que mi trafico pase por servidores sospechosos, falta informacion...
#26
Diseño UX/UI / Re:Pide tu firma Underc0de!
Marzo 29, 2018, 11:56:58 AM
alguien seria tan amable de hacerme una? me gustaria tenerla
#27
Análisis y desarrollo de malwares / Re:Creando un ejecutable de broma
Marzo 27, 2018, 05:03:26 PM
jajajjaaajja ste men tiene mucho tiempo librexd
#28
Dudas y pedidos generales / Re:Problema con PHP (error de memoria)
Marzo 25, 2018, 09:07:21 AM
podria pasar una foto de el error?
#29
Off Topic / Re:¿Desde qué rincón del mundo nos escribes?
Marzo 22, 2018, 01:30:49 PM
desde Colombia papus:v , saludos
#30
Análisis y desarrollo de malwares / Re:Creando un Ransomware para Android desde 0!
Marzo 22, 2018, 01:12:17 PMNo tienes permitido ver los links. Registrarse o Entrar a mi cuentaNo tienes permitido ver los links. Registrarse o Entrar a mi cuentaNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta
La codificacion funciona la desencriptacion no, buen aporte igual!
si funciona amigo yo mismo lo probe
prodria pasar que porque la ejecucion se hace en el hilo principal y nunca se delega un hilo puede que desencripte archivos que no esten encriptados o que se tenga que esperar un poco que los busque, ya que en ese codigo carga todos los archivos en memoria, tengo uno mas optimo que eh trabajado si quieres te lo paso, un saludo
Disculpa pero a mí también me genera errores al ejecutar el cifrado, sería un gran favor en pasarme el archivo.
Eh diseñado esta nueva version pero utilizando Asynctask(tareas asincronas), trabaja como un hilo en background y asi mejora el proceso , ademas ya no cargo todos los archivos en memoria si no que solo tomo su ruta y con esa cargo 1 a la vez para aguilizar el proceso, aqui solo coloco las funciones necesarias para encriptar y desencriptar archivos , lo de pedir permisos y el resto esta en el tutorial.
Tengo una variable global que es la clave la puedo dejar constante como en mi caso o pedirla cada vez que opriman el boton encriptar/desencriptar:
para encriptar solo cree el onclicklistener de su boton y ponga dentro:
y para desencriptar:
#31
Underc0de / Re:Grupo de WhatsApp de Underc0de
Marzo 22, 2018, 12:52:23 PM
pasen el grupo de telegram, creo que estoy baneado :'v
#33
Análisis y desarrollo de malwares / Re:Creando un Ransomware para Android desde 0!
Marzo 04, 2018, 03:03:37 PMNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta
La codificacion funciona la desencriptacion no, buen aporte igual!
si funciona amigo yo mismo lo probe
prodria pasar que porque la ejecucion se hace en el hilo principal y nunca se delega un hilo puede que desencripte archivos que no esten encriptados o que se tenga que esperar un poco que los busque, ya que en ese codigo carga todos los archivos en memoria, tengo uno mas optimo que eh trabajado si quieres te lo paso, un saludo
#34
Dudas y pedidos generales / Re:Funciones en lenguajes de programacion
Febrero 18, 2018, 03:16:50 PM
Men almenos ya lo intento hacer, intente, averigue que es una funcion y sera facil implementarlas en cualquier lenguaje
#35
Hacking / Re:[APP] Localizador de IPs
Febrero 14, 2018, 08:43:54 AM
Hola men, excelente trabajo, aca esta un api que funciona muy bien y es muy precisa por si algo
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tambien estoy planeando de hacer algo parecido, buena esa(y)
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tambien estoy planeando de hacer algo parecido, buena esa(y)
#36
Hacking / Re:EmailSpammer hacer spam nunca habia sido tan facil
Enero 31, 2018, 03:45:54 AMNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Link caido
Ya esta de nuevo online, fue culpa de github, saludos
#37
Hacking / Re:Prueba tu antivirus con Wicar
Enero 31, 2018, 03:17:16 AM
Buen aporte, los probe y todo funciona muy bien
#38
Hacking / Re:Obtener IP de un correo.
Enero 12, 2018, 12:31:55 PM
Muy buen aporte amigo, con mi spammer y este truquito puedo obtener ips masivamente, gracias
#39
Hacking / Re:EmailSpammer hacer spam nunca habia sido tan facil
Enero 03, 2018, 12:27:37 PMNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
¡Buen post y genial que hagas estos aportes en Underc0de !.
Al mailer le hiciste la GUI y te quedó bastante chulo.
Un saludo.
Gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, lo hago con todo el cariño , trabajare en la actualizacion.
#40
Hacking / Re:EmailSpammer hacer spam nunca habia sido tan facil
Diciembre 31, 2017, 05:39:17 PMNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Excelente amigo, te felicito
Gracias!