Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse. - Julio 05, 2008, 08:33:27
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow)  |  Tema: [W] Encriptar cadena 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [W] Encriptar cadena  (Leído 76 veces)
The Shadow
Moderadores
Colaborador
*****
Conectado Conectado

Mensajes: 712


Fucking mnemonic c0d1n6!

shadow@el-hacker.org
Ver Perfil Email
« en: Marzo 22, 2008, 01:46:19 »

Código:
;====================================================================
;A128 Versi¢n 1.00
;Este programa encripta una cadena de caracteres hasta 20 Bytes.
;El programa se puede optimizar mucho m s, la idea es hacer un
;programa que encripte todo un documento con este mismo algoritmo
;el documento debe crearse en codigo ASCII para que pueda ser
;encriptado, y posteriormente enviarse por e-mail.
;Herramienta £til cundo uno desea que sus mensajes no sean
;le¡dos por usuarios comunes.
;Ver el archivo de notas (A128.TXT)
;Agradezco a los autores de los siguientes libros de los
;cuales me documnt‚ bastante para hacer este programa:
;- ROJAS PONCE, Alberto. Ensamblador B sico. Computec
;- LILEN, H. Ensamblador de 80286 IBM AT y Compatibles. Paraninfo
;- ABEL, Peter. Lenguaje Ensamblador y Programaci¢n para
;  PC IBM y Compatibles. Pearson Educaci¢n
;
;Si usted modifica el c¢digo o logra el acometido de esta primera versi¢n
;por favor env¡e documentaci¢n a juanflp  @yahoo.com
;El programa solo tiene fines educativos por eso se anexa el codigo.
;                       Juan Felipe Mu¤oz Fern ndez.
;====================================================================
.MODEL SMALL
.STACK
.DATA
        Cadena  DB      20,0,20 DUP ('$') ; Bufer que almacena la cadena original.
        MenWel  DB      0AH,0DH,'A128.Este programa encripta una cadena de caracteres'
                DB      0DH,0AH,'$'
        MenWel2 DB      0AH,0DH,'Programado por: Juan Felipe Mu¤oz',0DH,0AH,'$'
        MenWel3 DB      0AH,0DH,'Fecha: 15 de Abril de 2002',0AH,0DH,'$'
        MenWel4 DB      0AH,0DH,'Revise las notas adjuntas (A128.TXT) para explicar el proceso','$'
        MenWel5 DB      0AH,0DH,'Comentarios a: juanflp  @yahoo.com','$'
        MenWel6 DB      0AH,0DH,'Para salir digite EXIT en may£sculas','$'           
        Error   DB      7H,7H,7H,0DH,0AH,'Error 1: La Cadena no pude ser NULA'
                DB      0DH,0AH,0DH,0AH,'$'
        Salir   DB      'EXIT'
        MenCap  DB      0AH,0DH,0AH,0DH,'Cadena a encriptar. M ximo 20 Bytes : ','$'
        MenCryp DB      0AH,0DH,0AH,0DH,'Cadena encriptada: ','$'
        MenDCr  DB      0AH,0DH,0AH,0DH,'Cadena desencriptada: ','$'
        MenPr   DB      0AH,0DH,'Presione cualquier tecla para continuar',0DH,0AH,'$'

.CODE
Comienzo:
        MOV     AH,0FH             ;Obtiene la modalidad de video actual.
        INT     10H
        MOV     AH,0               ;Cambia a la modalidad de video obtenida.
        INT     10H                ;Cambi la!
        MOV     AX,  @DATA           ;Inicializaci¢n del segmento de datos, por regla
                                   ;un segmento de datos debe ser inicializado por
                                   ;un movimiento a trav‚s de un registro de prop¢sito
                                   ;general o atrav‚s de la PILA.
        MOV     DS,AX              ;Es ac  donde se incializa.
        PUSH    DS                 ;Guardo DS.
        POP     ES                 ;DS=ES, ES se necesita por la naturaleza de las
                                   ;Operaciones que van a ser utilizadas.
        MOV     DX, OFFSET MenWel  ;Preparaci¢n para mostrar el MenWel
                                   ;en pantalla
        MOV     AH,9H              ;Funci¢n de la Int 21 para mostrar
                                   ;mensajes en pantalla.
        INT     21H                ;Mu‚stralo!
        LEA     DX,MenWel2
        MOV     AH,9H
        INT     21H
        LEA     DX,MenWel3
        MOV     AH,9H
        INT     21H
        LEA     DX,MenWel4
        MOV     AH,9H
        INT     21H
        LEA     DX,MenWel5
        MOV     AH,9H
        INT     21H
        LEA     DX,MenWel6
        MOV     AH,9H
        INT     21H
               
Captura:
        LEA     DX,MenCap          ;Preparaci¢n para mostrar MenCap en
                                   ;pantalla.
        MOV     AH,9H              ;El mismo proceso anterior con la
                                   ;funcion 9H de la Int 21H
        INT     21H                ;Mu‚stralo!.
        MOV     AH,0AH             ;Funcion de la Int 21 para capturar
                                   ;una cadena.
        MOV     DX, OFFSET Cadena  ;DX debe poseer la direcci¢n del bufer.
        PUSH    DX                 ;Por seguridad.
        INT     21H                ;Se captura.
        POP     DX                 ;Recupero.
        INC     DX                 ;Obtiene los bytes realmente
                                   ;le¡dos en el bufer.
        MOV     SI,DX              ;SI con Cadena+1.
        CMP     BYTE PTR [SI],0    ;Es 0 (nula)?
        JNZ     Capt02             ;No, entonces salta a Capt02.
        LEA     DX, Error          ;Si?, se prepara para mostrar error.
        MOV     AH,9H
        INT     21H     
        MOV     AH,0H
        INT     16H
        JMP     Comienzo           ;Vuelve y se captura la cadena.
Capt02:
        INC     DX                 ;Obtengo el primer byte para ver si no
                                   ;se digit¢ EXIT.
        MOV     CX,4               ;Voy a revisar 4 Bytes (EXIT).
        MOV     SI,DX              ;Tengo la cadena
        MOV     DI, OFFSET Salir   ;Voy a comparar.
        REPE    CMPSB              ;Se digit¢ EXIT?.
        JCXZ    Fuera              ;Si es cierto sale del programa.
        MOV     SI, OFFSET Cadena+1;Obtengo la cantidad de Bytes realmente le¡dos
        LEA     BX, Cadena+1       ;Cargo BX igual que con la anterior
                                   ;instrucci¢n.
        MOV     CL, BYTE PTR [SI]  ;CX con la cantidad de caracteres.
Crypt:
        INC     BX                 ;Primer caracter de la cadena     
        MOV     AH,[BX]            ;Lo llevo a AH para su encriptaci¢n
        ADD     AH,128D            ;Lo encripto.     
        MOV     [BX],AH            ;Lo restauro en el bufer.     
        LOOP    Crypt              ;Itero hasta CX=0
        LEA     DX,MenCryp
        MOV     AH,9H
        INT     21H
        MOV     DX, OFFSET Cadena+2;Me preparo para mostrar la cadena encriptada
                                   ;me posiciono en el primer caracter de la
                                   ;cadena                                           
        MOV     AH,9H                   
        INT     21H                ;Muestro la cadena encriptada

        MOV     SI, OFFSET Cadena+1;Me preparo para desencriptarla
        LEA     BX, Cadena+1       ;Lo mismo anterior
        MOV     CL, BYTE PTR [SI]  ;CX con el numero de caracteres
DeCrypt:
        INC     BX                 ;Obtengo primer caracter
        MOV     AH,[BX]
        SUB     AH,128D            ;Lo desencripto     
        MOV     [BX],AH            ;Se restaura el original en el bufer
        LOOP    DeCrypt            ;Repito hasta que CX=0
        MOV     DX, OFFSET MenDCr
        MOV     AH,9H
        INT     21H
        MOV     DX, OFFSET Cadena+2;Primer caracter de la cadena
                                   ;desencriptada.
        MOV     AH,9H
        INT     21H                ;Muestro la cadena desencriptada
        MOV     DX, OFFSET MenPr
        MOV     AH,9H
        INT     21H
        MOV     AH,0H              ;Espero que el usuario pulse     
        INT     16H                ;cualquier tecla para continuar     
        JMP     Captura            ;Vuelve y juega.
Fuera:
        MOV     AX,4C00H           ;Funci¢n para retornar al DOS     
        INT     21H                ;Retorno!.           
END     Comienzo                   ;y se acab¢.

Fuente: LWP
Autor: Muñoz F.
« Última modificación: Marzo 28, 2008, 05:10:46 por The Shadow » En línea





Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Reglamento del Foro
     Linux  Registered User #473016
Aleks
Moderación
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 2527


Mehr licht


Ver Perfil Email
« Respuesta #1 en: Marzo 23, 2008, 09:18:38 »

Muy buenos tus aportes The Shadow, gracias men!
En línea





Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

I´ll see you in the other side, I know it!
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow)  |  Tema: [W] Encriptar cadena « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC