[asm] Szyfrowanie pliku

0

Mój problem dla osób zaznajomionych z assemblerem powinien być banalny. Otóż potrzebuję kod źródłowy programu który po odpaleniu z 2 parametrami (nazwy plików) będzie szyfrował pierwszy plik w miejsce wskazane przez ścieżkę drugiego. Szyfrowanie powinno być symetryczne, tzn: odpalenie pliku da nam postać zaszyfrowaną, a odpalenie szyfru da nam plik źródłowy. Napisałem taki program w pascalu, co jest rzeczą dla mnie banalną, teraz przyszło mi zrobić to samo w asemblerze i okazało się, że problem jest nie do przeskoczenia

Z góry dziękuję za pmoc.

0

Nie podajesz jak ma szyfrować, najlepsza była by chyba metoda Xor?owania, prosta i nie trzeba się zastanawiać czy odszyfrowujemy czy szyfrujemy =]

0
ADuch napisał(a)

....najlepsza....

czyzby??

0

a może najprostsza...

0

to jest to co mam

	;xor.exe nazwapliku haslo                   

.MODEL TINY 
.DATA
	buf		db		512 dup (?)                                                             
	errortext1      db              'Blad podczas otwierania pliku: $'                                      
	infotext1       db              'Rozpoczeto kodowanie','$'                                              
	infotext2       db              0Ah, 0Dh, 'Zakonczono kodowanie','$'                                      
	z		db		?                                                                       
	tmp		dw		?                                                                       
                                
.CODE                                       
        org 100h                            
START:                                      
	jmp	GETPSP                      
                                            
EXIT:                                       
        mov     AX,4C00h                   
	int	21h                         
                                            
GETPSP:                                     ;\
        mov     CL,DS:[80h]                ; >dlugosc argumentow
	xor	CH,CH                      ;/
        or      CX,CX                      ; >dlugosc=0 to koniec
	jz	EXIT                        

GETARG:                                     
	mov	SI,82h                     ;\
	lea	DI,buf                     ; |zapisuje argumenty
	cld                                 ; |do bufora
	rep movsb                           ;/
	xor	SI,SI                      
                                            
PTL1:                                       
	cmp	buf[SI],' '                ;\
        je      ENDPTL1                     ; |spacja=koniec zliczania
        cmp     buf[SI],0Dh                ; |0Dh=brak hasla
	je	EXIT                        ;/
	inc	SI                          
	jmp	PTL1                        
                                            
ENDPTL1:                                    
	mov	buf[SI],00h                ;\
        inc     SI                          ; >nazwa pliku w ASCIZ
	mov	tmp,SI                     ;/
        cmp     buf[SI],0Dh                ; >0Dh=brak hasla
	je	EXIT                        
                                            
	mov	AX,3D02h                   ;\
	lea	DX,buf                     ; |otwiera plik z/o
	int	21h                         ; |
	jc	ERROR                       ;/
                                            
        mov     BX,AX                      ; >numer do pliku do BX
                                            
	mov	AH,09h                     ;\
        mov     DX,offset infotext1               ; >info o starcie kodowania
	int	21h                         ;/
                                            
PTL2:                                       
	jmp	CHECKPOINT                  
                                            
SET:                                
        mov     SI,tmp                     ; >zacznij od poczatku hasla
	jmp	CONTINUE                    
                                            
CHECKPOINT:                         
        cmp     buf[SI],0Dh                ; >sprawdz czy koniec hasla
	je	SET                         
                                            
CONTINUE:                           
	mov	AH,3Fh                     ;\
	mov	CX,01h                     ; |odczyt bajtu
	lea	DX,z                       ; |do zmiennej 'z'
	int	21h                         ;/
                                            
        or      AX,AX                      ;\jezeli AX=0
	jz	ENDPTL2                     ;/to koniec pliku
                                            
	mov	DH,buf[SI]                 ;\
	mov	DL,z                       ; |
        xor     DH,DL                      ; |xoruj na podstawie hasla
	mov	z,DH                       ;/
                                            
	mov	AX,4201h                   ;\
        mov     CX,0FFFFh                  ; |przesun pozycje kursora
        mov     DX,-01h                    ; |o jeden w tyl
	int	21h                         ;/
                                            
	mov	AH,40h                     ;\
	mov	CX,01h                     ; |zapis zmienionego znaku
	lea	DX,z                       ; |na stary znak
	int	21h                         ;/
                                            
	inc	SI                          
        jmp     PTL2                        ; >powtarzaj do konca pliku
                                            
ENDPTL2:                                    
	mov	AH,3Eh                     ; >zamknij plik
	int	21h                         
                                            
	mov	AH,09h                     ;\
        mov     DX,offset infotext2               ; >info o koncu kodowania
	int	21h                         ;/
                                            
	jmp	EXIT                        
                                            
ERROR:                                      
	mov	AH,09h                     ;\
	mov	DX,offset errortext1              ; \
        int     21h                         ;  |wyswietlenia wiadomosc bledu
        mov     buf[SI],'$'                ;  |oraz powiadomienie, ktorego pliku
        lea     DX, buf                     ;  |nie mozna otworzyc
	int	21h                         ; /
	jmp	EXIT                        ;/


END

rzecz w tym ze mam problem z parametrami (lub warunkami), tzn wyswietla mi bledne komunikaty chociaz plik zostaje zaszyfrowany.
nie wiem co z tym do konca zrobic.</asm>

0

hmm na zywca to idzie zaimplementowac md5 w asmie ale to by bylo dosc masochistyczne

0
cepa napisał(a)

hmm na zywca to idzie zaimplementowac md5 w asmie ale to by bylo dosc masochistyczne

napisal ze potrzebuje szyfru symetrycznego - a md5 jest funkcja skrotu - do niczego mu sie nie przyda...

0

hmm na zywca to idzie zaimplementowac md5 w asmie ale to by bylo dosc masochistyczne

Już nawet to zrobił Rewolf, możesz znaleźć to na jego stronie

1 użytkowników online, w tym zalogowanych: 0, gości: 1