T

tux_geek

Usuario (Uruguay)

Primer post: 20 jun 2011Último post: 30 sept 2011
2
Posts
104
Puntos totales
12
Comentarios
H
Hola Mundo hecho en NASM en linux (Nasm/x86)
LinuxporAnónimo6/20/2011

Hola este es mi primer post! Acá pongo el codigo de mi hola mundo hecho en NASM para 32bits, x86 en debian squeeze.. explicado linea por linea (como debe ser! ) Bueno ahora contar un poco sobre NASM:El Netwide Assembler o NASM,es un Ensamblador para Intel x86. Puede ser usado para escribir programas tanto de 16 bits como de 32 bits (IA-32). Tambien existe un dessamblador, llamado NDISASM Existen otros como FASM, GAS (el GNU ASM con la sintaxis de AT&T, lo cual lo hace muy interesante ya que la mayoria de los ensambladores le agregan cosas a la sintaxis o usan la de Intel) ,TASM (turbo asm) o incluso el MASM para Micro$oft Codigo: ------------------------------------------------------------------------------------------------------------------------- section .data hola_palabra: db 'Hola TARINGUEROS!!',18 hola_tamanio: equ $-hola_palabra section .text global _start _start: mov eax,4 ; call system 'write' id 4 mov ebx,1 ; descriptor de archivo 1 = pantalla mov ecx,hola_palabra ; guardo la cadena en un registro ecx mov edx,hola_tamanio ; guardo la cadena en un registro edx int 80h ; interrupcion para invocar al kernel ; Final del programa mov eax,1 ; llamada del sistema 'exit' mov ebx,0 ; codigo de error 0 int 80h ; interrupcion para invocar al kernel de linux (en ms-dos es int 21h) --------------------------------------------------------------------------------------------------------------------------------------- Para ensamblarlo y linkarlo: nasm -f elf hola_taringa.asm ld -o hola_taringa hola_taringa.o Donde: -f parametro para indicar el formato de la cabecera: en nuestro caso elf (http://es.wikipedia.org/wiki/Executable_and_Linkable_Format) ld es el GNU Linker -o es output (o sea la salida) ------------------------------------------------------------------------------------------------------------------------------------------ Pdf de la especificacion de el formato ELF: http://www.sco.com/developers/devspecs/gabi41.pdf Saludos!

71
0
Criptografía y Encriptación en Linux en C y python+ataques
Criptografía y Encriptación en Linux en C y python+ataques
LinuxporAnónimo9/30/2011

Hola, hice un mini programa en C que si le pasas un parametro en argv[1] te lo pasa a DES con la función crypt de UNIX...Pero se preguntaran que carajo es todo esto? bien empezamos con lo basico, Encriptar (cifrar) es básicamente aplicar una función matematica o un algoritmo de programacion a un conjunto de bits (ya sea un archivo o una cadena de caracteres) para provocar una salida ilegibleDesencriptar (Descifrar) es hacer el proceso inverso para obtener una funcion 'f tal que f = 'f y por lo tanto validar la autentificación si es el caso.Criptoanalisis: se trata de apartir de un texto cifrado obtener un texto legible, mediante tecnicas dependiendo si es criptografia antigua o moderna , teniendo asi la busqueda de patrones y el clasico analisis de frecuencias (en el cual buscas la frecuencia de una letra en un mensaje dependiendo la frecuencia en la que aparece en el mensaje y en el idioma se puede predecir si es una a o una i o lo que sea , para esto es muy bueno una herramienta para windows llamada cryptool, con cifrados clasicos como rot-13 (cesar) los cifrados hebraicos vignere polimorficos ,etc.AtaquesPara mas modernas se tiene las tecnicas de ataque de cumpleaños para las funciones de resumen o hash (en las cuales un mismo documento genera un hash el cual es one-way , o sea es irreversible y genera una cadena de longitud constante),el ataque de cumpleaños se basa en basicamente en la llamada paradoja del cumpleaños la cual se deprende de que si generas en un hash de 128 bits para obtener una colision del mismo necesitarias 2^128 o mejor 2^(1*128/2) o sea 2^64 lo cual sigue siendo mucho , pero imaginen por ejemplo un hash de 40 bits como lo es el de algunos sistemas de DVD entonces necesitarias una fuerza bruta de 2^20 para obtener una colision que seria otro hash igual con un mensaje distinto lo cual lo hace muy favorable para un ataque por la debilidad del cifrado (dicho esto usar hashes de 512 en adelante si sos muy paranoico como yo )Otro ataque interesante son las tablas rainbow que son tablas de hashes precomputados los cuales se comparan con el original, lo cual termina siendo un ataque de diccionario pero se agilizan los tiempos y se obtienen mejores resultados de performance Sin embargo el hecho de la seguridad en los hashes ha sido puesta en duda por un par de matematicos chinos que han logrado romper los hashes MD5 crudo y sha-1 (Secure hash Algorithm de 160 bits en adelante) demostrando que ya no son utiles estos algoritmos, y por lo tanto abre una brecha enorme de seguridad en la web ya que md5 es casi el standard en algunos casos, la solución seria implementar un propio algorimo que sea lo suficiente mente rapido para este proposito uno de los grandes de la Criptografia Moderna y padre del algoritmo blowfish y Two Fish, ademas autor de varios libros como Practical Cryptography o el libro rojo de la criptografia Applied Cryptography el cual tiene una verson en creative commons si mal no recuerdo.Bruce Schneider esta trabajando para la creación de un nuevo standard para funciones hash.Sino mas practico combinar varios algoritmos de hash o sea hasear una palabra 2 veces h(md5)+h(sha-1)DES (Data Encryption Standard) es uno de los algoritmos del que mas se ha escrito asi que no me voy a meter a hablar del propio algoritmo de iteracion de bloques ni nada de eso.. lo que se puede agregar a modo de introduccion es que es un cifrado de bloque de bits el cual lo ideal es implementarlo uno mismo para aprender, volviendo a lo anterior el problema de este algoritmo es la longitud de 56 bits lo cual en la practica se puede romper en poco tiempo con las computadoras actuales, el cual es ideal para esto el software John the ripper por ejemplo, eligiendo el charset adecuado para ataques de fuerza brutaçDES ya habia sido roto por el equipo diffie-helman alla por 1977, teoricamente aunque en la practica se construyo una computadora con la unica finalidad de romper este algoritmo a finales del siglo XX por lo cual se cambio el standard al AES (o sea el llamado algoritmo rinjdael en honor a las siglas de los que lo inventaron) y es un estandard actual. En C de UNIX al igual que en Python existe la función crypt para hacer esta encriptacion que varia segun la salt que le pongas , siendo la salt el modificador para que cambie hasta 4096 veces la clave segun las combinaciones que se den, el problema que tiene esta función es que utiliza (si no se cambia) el algoritmo de encriptacion DES el llamado Data Encryption Standard, que es debil a un ataque de fuerza bruta (existen otros tipos de ataques teoricos como el criptoanalis diferencial y el criptoanalisis lineal pero parten de tener parte de la informacion conocida en texto plano (asi que en la practica es poco viable)Dicho todo esto los códigos..Acá el código en C:/* * Para compilar: gcc -lcrypt DES -o DES* Para ejecutar ./DES <PASSWORD_A_CIFRAR>*/#include <stdio.h>#include <unistd.h> //libreria de constantes simbolicas#define _XOPEN_SOURCE int main (int argc, char* argv[]) { char *password; //puntero al string password (retorna la direccion del argumento value)printf("El password en DES es: %snn", crypt (argv[1], "$6$"); // el parametro $6$ es un modificador "salt" de la funcion crypt() return 0;}Me baje el código fuente del comando passwd y por lo que parece cifra MD5 o SHA 256 o SHA 512 pero no se cual ..:sPara mas información: man cryptAca el código en python:#!/usr/bin/env python# coding utf-8import getpassimport cryptsemilla = 'sl'pass_unix = getpass.getpass()def login_user(semilla,pass_unix): return crypt.crypt(semilla,pass_unix)print login_user(semilla,pass_unix)Saludos!recomendacion a modo anecdotario.. no usar DES usar blowfish que esta disponible en suse por ejemplo o sino el viejo MD5 Para mas información de crypt en python: http://docs.python.org/library/crypt.htSaludos

33
8
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.