Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [nasm] cryptage [ Archives / Newbii ] (sirozz)

mardi 3 août 2004 à 16:46:30 | [nasm] cryptage

sirozz

Salut à tous !

J'ai fait un petit prog qui crypte (xor) un fichier passé en ligne de commande, mais j'ai fait ça avec le guide des interruptions sous les yeux et c'est de la pure bidouille. Ca marche mais c'est trop trop lent !! je crois que c'est parce que j'utilise justement trop d'appels aux interruptions. voila le source :

--------------------------------------------------------------------------

key equ 12341234h

[org 100h]

mov cl, [80h] ; recup cmdline
mov si, 82h
mov di, cmdline
rep movsb
dec di
mov [es:di], byte 0

mov ah, 3dh ; ouverture fichier
mov al, 0h
mov dx, cmdline
int 21h
mov [handle1], ax

mov ah, 3ch ; creation fichier temp
mov cx, 20h
mov dx, cmdline + 1
int 21h
mov [handle2], ax

read mov ah, 3fh ; lecture de 4 octets
mov bx, [handle1]
mov cx, 4
mov dx, dwordBuf
int 21h

cmp ax, 0
je fin

crypt mov eax, [dwordBuf]
xor eax, key
mov [dwordBuf], eax

mov ah, 40h ; ecriture dans fichier temp
mov bx, [handle2]
mov cx, 4
mov dx, dwordBuf
int 21h

jmp read

fin mov ah, 3eh ; ferme fichier source
mov bx, [handle1]
int 21h

mov ah, 3eh ; ferme fichier temp
mov bx, [handle2]
int 21h

mov ah, 41h ; supprime le source
mov dx, cmdline
int 21h

mov ah, 56h ; renomme le temp
mov dx, cmdline + 1
mov di, cmdline
int 21h

ret



[segment .bss]
cmdline resb 127
handle1 resw 1
handle2 resw 1
dwordBuf resd 1

--------------------------------------------------------------------------


Avez-vous une solution simple et plus rapide ? (je crois que les pros de l'assembleur vont pousser des hauts-cris en voyant mon code....faut bien commencer quelque part....) Merci d'avance.

mardi 3 août 2004 à 17:57:58 | Re : [nasm] cryptage

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

le probleme est effectivement le nombre d'appel a l'interruption 21h ( surtout sous XP ).

commence par lire et ecrire tes fichiers par bloc et déjà ça devrait aller mieux ( mais ca oblige a avoir un algorithme un peu plus travaillé ).

@++

mardi 3 août 2004 à 18:21:23 | Re : [nasm] cryptage

sirozz

ok, merci pour le conseil mais peut tu me dire (en gros) comment faire ce genre de truc (lire et écrire par bloc), il faut que je fasse le cryptage en mémoire ? ou si ya déja un message sur ce forum qui traite du sujet, peut tu me poster le lien ? merci.

mardi 3 août 2004 à 18:47:42 | Re : [nasm] cryptage

patatalo

Membre Club Administrateur CodeS-SourceS

re,

Buff resd 1024

.lp1
mov ah, 3fh ; lecture de 4 octets
mov bx, [handle1]
mov cx, 4096
lea dx, [Buff]
int 21h
;jc ??

cmp ax,0
mov bx,ax
je .end

push ax
.lp2
xor dword [Buff+bx-4],key
sub bx,4
ja .lp2 ; les derniers octets seront omis si - de 4 octets
pop cx

mov ah, 40h ; ecriture dans fichier temp
mov bx, [handle2]
lea dx, [Buff]
int 21h
jnc .lp1

.end

ca devrait etre un truc comme ça ...

@++

mardi 3 août 2004 à 20:13:20 | Re : [nasm] cryptage

sirozz

Ok, merci Patatalo ! je vais essayer ça.

mardi 3 août 2004 à 20:53:10 | Re : [nasm] cryptage

sirozz

Réponse acceptée !
Excellent ! Merci beaucoup Patatalo ! Ca marche bien maintenant. Je pose le source :
--------------------------------------------------------

key equ 12341234h

[org 100h]

mov cl, [80h] ; recup cmdline
mov si, 81h
mov di, cmdline
rep movsb
mov [es:di], byte 0

mov ah, 3dh ; ouverture fichier
mov al, 0h
mov dx, cmdline
int 21h
mov [handle1], ax

mov ah, 3ch ; creation fichier temp
mov cx, 20h
mov dx, cmdline + 1
int 21h
mov [handle2], ax


read mov ah, 3fh ; lecture
mov bx, [handle1]
mov cx, 4096
mov dx, buffer
int 21h

mov bx, ax ; recup nb d'octets lus
cmp ax, 0
je fin


push ax ; sauve nb octets lus
crypt xor dword [buffer+bx-4], key
sub bx, 4
ja crypt

mov ah, 40h ; ecriture dans fichier temp
mov bx, [handle2]
pop cx ; recup ax = nb octets
mov dx, buffer
int 21h

jmp read

fin mov ah, 3eh ; ferme fichier source
mov bx, [handle1]
int 21h

mov ah, 3eh ; ferme fichier temp
mov bx, [handle2]
int 21h

mov ah, 41h ; supprime le fichier source
mov dx, cmdline
int 21h

mov ah, 56h ; renomme le fichier temp
mov dx, cmdline + 1
mov di, cmdline
int 21h

ret



[segment .bss]
cmdline resb 127
handle1 resw 1
handle2 resw 1
buffer resd 1024

--------------------------------------------------

par contre ya un truc étrange, NASM ne compile pas avec les bons opcodes quand j'utilise "lea dx, buffer". mais ça marche bien avec "mov dx, buffer". @+

In tartiflette we trust !

mercredi 10 septembre 2008 à 06:59:03 | Re : [nasm] cryptage

damahom

Je ne suis pas un expert en ASM, mais des que l'on crypte un fichier avec XOR le mot de passe apparait en répété spécialement si il y des zéro(0) car:
Imaginons un mot de passe de 4bits(juste pour faire simple) par exemple : '1101'

essayons d'encoder un petit fichier de 16bits '1101100010110000'
faisons comme ceci        1101100010110000
et copiant le passe         1101110111011101
et faisons le XOR          0000010101101101
les dernier 4 bit sont                                 |
zéro alors le passe ce répété--------------|

Ceci est un simple exemple, imaginez un fichier plein de zero.

Pour moi la solution serai de compresser le fichier par un methode de compression des bit repete.



Cette discussion est classé dans : fichier, int, mov, 21h, cmdline


Répondre à ce message

Sujets en rapport avec ce message

loader problème de code [ par TRAX44 ] salut tout le monde !!g essayer de faire un loader (petit prog qui charge un autre prog) mais c un desartre je comprend pas très bien ce qui ne marche Help : afficher une chaine de caractère "mémorisée" [ par did2604 ] Bonsoir à tous. Mon problème peut vous paraître très simpliste, mais pour quelqu'un qui fait de la programmation assembleur depuis à peine 1 mois, tou Probleme de clic !!!! [ par mgorillaz ] Bonjour je suis debutant en assembleur et je dois faire une calculatrice mais sous certaine conndition et je n'arrive pas du tout a gerer mes clics !! Probleme ds mon code ki peut m aider?? [ par Gillouille ] voila l'objectif de ce programme c est de comparer deux fichiers de longueur differente et d'y trouver tt les éléments commun kelke soit leur position Problème de restitution d'une chaîne. [ par Sawteeth ] Bonsoir. Je viens de débuter l'assembleur et j'ai tenté de faire un petit programme qui lit une chaîne au clavier et l'affiche à l'écran. Le problème assembleur/ patronyme [ par maxverypainful ] Bonjour, je suis nouveau en tant qu'étudiant en informatique de gestion et j'ai une question concernant un code que nous devons créer.Il a pour but de tp assembleur i3 pour la FST [ par babbiverus ] main proc mov ax,@Datamov ds, axmov si,offset tabmov cx, 16mov bx,0saisie:  mov dx,offset commande;afficher "saisir un nombre"mov ah,9int 21hmov ah, 1 Mini OS !! debut [ par Hardouz ] salut a tous ! je debut en ASM je vx bosser un px en ASM je connais l'architechture ect !!! j'ai fais un pti programme mais il ya un probléme 1/ lors AT&T erreur de compilation etc... [ par maminovadu75 ] Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.