;;;;;; données necessaires pour un bon fonctionnement ckey: dd @f-$-4 ; directive brute force pour connaitre la taille d'un champ sous fasm. db 'Mot de passe' @@: ; etiquette anonyme, utilisée pour la directive precedente dd 0 ; padding pour ne pas avoir d'erreur dans la mot de passe. filetocrypt: ; peut etre n'importe quel fichier binaire dd @f-$-4 ; respecter juste la structure autours du fichier. file 'fichier à crypter .extension' @@: dd 0 ; padding utilisé pour ne pas deborder ;;;;;; pour executer le code ... mov esi,ckey ; charger le mot de passe call rnd1.init ; initialiser le PRNG mov esi,filetocrypt ; pointer le fichier a crypter mov edi,[esi] ; en connaitre la taille add esi,4 call crypt ; lancer le chiffrement, dechiffrement ... ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; petit algo de chiffrement;;;;;;;;;;;;;;;; crypt: call rnd1 ; generer un nombre aleatoire xor [esi],ecx ; appliquer le XOR sur le fichier inc esi ; pointer au prochain char du fichier, probleme d'alignement, mais c'est pas grave... dec edi ; decrementer le compteur jne crypt ; si c'est pas la fin, continuer ret ;;;;;;;;; generateur pseudo aleatoire pour le chiffreur rnd1: mov ecx,[.seed] add ecx,[.seed1] add ecx,[.seed2] add ecx,[.seed3] or ecx,1 ror ecx,1 add [.seed],ecx and cl,1 shr ecx,cl adc [.seed1],ecx and cl,1 shr ecx,cl adc [.seed2],ecx and cl,1 shr ecx,cl adc [.seed3],ecx ret ;;;;;;;; initialisation du generateur aleatoire depuis un mot de passe en ascii .init: push eax ebx ecx mov ecx,[esi] add esi,4 mov [.seed],ecx ; initialiser les graines avec la taille du mot de passe mov [.seed1],ecx mov [.seed2],ecx mov [.seed3],ecx @@: movzx eax,byte[esi] ; charger un char du mot de passe. movsx ebx,al ror ebx,16 add eax,ebx add [.seed],eax adc [.seed1],0 adc [.seed2],0 adc [.seed3],0 inc esi dec ecx jne @b pop ecx ebx eax ret align 4 .seed dd 0 .seed1 dd 0 .seed2 dd 0 .seed3 dd 0
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.