Montage - Instruction LODS
En cryptographie, un chiffrement César est l'une des techniques de chiffrement connues les plus simples. Dans cette méthode, chaque lettre des données à chiffrer est remplacée par une lettre à un nombre fixe de positions dans l'alphabet.
Dans cet exemple, chiffrons une donnée en remplaçant simplement chaque alphabet par un décalage de deux alphabets, donc a sera remplacé par c, b avec d etc.
Nous utilisons LODS pour charger la chaîne d'origine «mot de passe» dans la mémoire.
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, len
mov esi, s1
mov edi, s2
loop_here:
lodsb
add al, 02
stosb
loop loop_here
cld
rep movsb
mov edx,20 ;message length
mov ecx,s2 ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
s1 db 'password', 0 ;source
len equ $-s1
section .bss
s2 resb 10 ;destination
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant:
rcuuyqtf