Не у каждого есть терпение, и стоко свободного времени чтоб покапаться в чужом коде. Советую почитать rfc по протоколу smtp, а если совсем уж лень, то берёшь любой почтовый клиент, отправляешь письмо, не забыв перед этим врубить сниффер(советую ethereal). Потом сохраняешь данные, делаешь точно так-же через свою прогу, потом данные сниффера сравниваешь и смотришь гиде косяк.
да я понимаю ...но код не сложный сам по себе но у меня голова болит от него уже иногда взгляд другого нужен...ошибка ндето в прикреплении файла а где не знаю ...((((( смотрю каждый день пробую но чето не идет а бросать не охота, там вроде как у всех
CrLf equ 0dh,0ah и 0 на конце не достаточно ??? хм попробовал не меняет роли ...чето не то с прикреплением но млин буффер то динамический для файла
Переводил на Масм ....все равно косяки дето ...млин голова кругом Код (Text): ; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ; Sending mail with attach in FASM ; Created by Ct757 ; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Çäåñü ÿ õî÷ó ïîêàçàòü, êàê ìîæíî îòïðàâèòü ïèñüìî ñ âëîæåíèåì ; íàïðÿìóþ ÷åðåç SMTP-ñåðâåð (â äàííîì ñëó÷àå smtp.mail.ru) ;  ïðèíöèïå, êîìàíäû òå æå, ÷òî è ïðè ïîñûëêå îáû÷íîãî ïèñüìà, ; ðàçíèöà òîëüêî â òîì, ÷òî àòòà÷ íóæíî çàêîäèðîâàòü ïî àëãîðèòìó ; base64, à òàê æå óêàçàòü íåêîòîðûå äîïîëíèòåëüíûå ïóíêòû â çàãîëîâêå ïèñüìà ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ß íå áóäó â ïîäðîáíîñòÿõ îáúÿñíÿòü SMTP-êîìàíäû, åñëè âû èõ íå çíàåòå ñìîòðèòå RFC ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .486 .model flat, stdcall option casemap:none include c:\masm32\include\kernel32.inc includelib c:\masm32\lib\kernel32.lib include c:\masm32\include\windows.inc includelib c:\masm32\lib\wsock32.lib include c:\masm32\include\wsock32.inc base64 PROTO read_buf PROTO CrLf equ 0dh,0ah .data ; smtp_server db '194.67.23.111',0 ; IP-àäðåñ smtp.mail.ru helo_0 db 'EHLO 0',13,10 ; Êîìàíäà helo helo_0_sz = $ - helo_0 ; mail_fr db 'MAIL FROM: ччч@mail.ru',13,10 ; Îò êîãî ïèñüìî mail_fr_sz = $ - mail_fr ; rcpt_to db 'RCPT TO: ччч@mail.ru',13,10 ; Êîìó îòïðàâëÿòü rcpt_to_sz = $ - rcpt_to ; data_ db 'DATA',13,10 ; Êîìàíäà data data_sz = $ - data_ ; ;---------- Login/Pass (Base64 Encode) ------------- Login db 'логин',CrLf,0 Login_sz = $ - Login Pass db 'пасс',CrLf,0 Pass_sz = $ - Pass Server db 'smtp.mail.ru',0 ;------------- MailServer's commands --------------- ;HELO db 'EHLO %s',CrLf,0 AUTH db 'AUTH LOGIN',CrLf,0 AUTH_sz = $ - AUTH DATA db 'DATA',CrLf,0 ENDD db CrLf,'.',CrLf,0 QUIT db 'QUIT',CrLf,0 ;--------------------------------------------------- ;--------------------------------------------------- ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Çàãîëîâîê è òåêñò ïèñüìà ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ message db "From: Bill Gates <ччч@mail.ru>",13,10,0 ; Îò êîãî db "Subject: Test MESSAGE",13,10 ,0 ; Òåìà db "To: TEST <ччч@mail.ru>",13,10,0 ; Êîìó db "MIME-Version: 1.0",13,10 ,0 ; Âåðñèÿ MIME db "Content-Type: multipart/mixed;",13,10,0 ; Òèï ñîäåðæèìîãî db 'boundary="--ct757"',13,10,13,10,0 ; Ðàçäåëèòåëü db "----ct757",13,10,0 db "Content-Type: text/plain; charset=Windows-1251",13,10,0 ; Ñîäåðæèìîå: òåêñò, db "Content-Transfer-Encoding: 8bit",13,10,13,10,0 ; êîäèðîâêà Win-1251 db "Hello, this is the test message with attachment.",13,10,13,10,0 ; Òåêñò ïèñüìà db "----ct757",13,10,0 db 'Content-Type: application/octet-stream; name="2.txt"',13,10,0 ; Ñîäåðæèìîå: âëîæåíèå db 'Content-Disposition: attachment; filename="2.txt"',13,10,0 ; èìÿ ôàéëà - test.rar db "Content-Transfer-Encoding: base64",13,10,13,10,0 ; Ïîÿñíÿåì, ÷òî çàêîäèðîâàíî ; ñ ïîìîùüþ base64 message_sz = $ - message ; Ðàçìåð ïèñüìà âìåñòå ñ ; çàãîëîâêîì (áåç âëîæåíèÿ!) file_name db "C:\2.txt",0 ; Ôàéë, êîòîðûé íóæíî îòïðàâèòü sock dd 0 ; Äåñêðèïòîð ñîêåòà file_h dd 0 ; Äåñêðèïòîð ôàéëà map_h dd 0 ; Äåñêðèïòîð ìýïïèíãà map_addr dd 0 ; Àäðåñ ìýïïèíãà ; al_mem dd 0 ; Àäðåñ ïàìÿòè â êó÷å buf_sz = 100h ; Ðàçìåð áóôôåðà ; buf db buf_sz ; Áóôôåð äëÿ recv buf db 100h dup (?) .data? wsa WSADATA <?> ; Íåîáõîäèìûå sin sockaddr_in <?> ; ñòðóêòóðû .code ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; base64 encoder without dictionary by RT Fishel ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ; ebp = length, esi -> src buffer, edi -> dst buffer base64 PROC encode: push (76 shr 2)+1 pop edx outer: dec edx je newline lodsd dec esi inc ebp bswap eax mov ecx,4 inner: rol eax,6 and al,3Fh cmp al,3Eh jb testchar shl al,2 sub al,((3Eh shl 2)+"A"-"+") and 0FFh testchar: sub al,4 cmp al,"0" jnl store add al,"A"+4 cmp al,"Z" jbe store add al,"a"-"Z"-1 store: stosb dec ebp loopne inner jne outer mov al,"=" rep stosb ret store_crlf: mov ax,0A0Dh stosw ret newline: jmp store_crlf jmp encode base64 ENDP ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Ïðîöåäóðà ÷òåíèÿ â áóôôåð èç ñîêåòà ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ read_buf PROC invoke recv,sock,addr buf,sizeof buf,esi ret read_buf ENDP ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Íà÷àëî îñíîâíîé ïðîãðàììû ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ start: xor esi,esi invoke CreateFile,addr file_name,GENERIC_WRITE or GENERIC_READ,\ ; Îòêðîåì íóæíûé esi,esi,OPEN_EXISTING,esi,esi ; íàì ôàéë inc eax ; Âûõîäèì â je exit ; ñëó÷àå îøèáêè dec eax ; Åñëè âñ¸ îê, mov file_h,eax ; ñîõðàíèì åãî õýíäë invoke GetFileSize,eax,esi ; Óçíàåì ðàçìåð ôàéëà mov ebx,eax ; Ñîõðàíèì åãî â ebx rol eax,1 ; Óìíîæèì ðàçìåð íà äâà ; (íà âñÿêèé ñëó÷àé, ò.ê. ; ðàçìåð çàêîäèðîâàííîãî ; â base64 ôàéëà âñåãäà áîëüøå) add eax,message_sz ; Ïðèáàâèì ê ïîëó÷èâøåìóñÿ ; ðåçóëüòàòó ðàçìåð óæå ; èìåþùåãîñÿ ïèñüìà invoke LocalAlloc,LMEM_FIXED,eax ; Âûäåëèì ìåñòî â êó÷å test eax,eax ; Åñëè îøèáêà - je exit ; âûõîäèì, èíà÷å mov al_mem,eax ; ñîõðàíèì àäðåñ mov edi,eax ; Ïåðåìåñòèì â êó÷ó mov esi,offset message ; ïîäãîòîâëåííûé mov ecx,message_sz ; çàãîëîâîê è òåêñò rep movsb ; ïèñüìà xor esi,esi invoke CreateFileMapping,file_h,esi,PAGE_READWRITE,esi,ebx,esi ; Ñîçäàäèì file mapping test eax,eax ; Âûõîäèì â je clean_exit3 ; ñëó÷àå îøèáêè mov map_h,eax ; Åñëè âñ¸ ok, ñîõðàíèì õýíäë invoke MapViewOfFile,eax,2,esi,esi,esi ; Ñïðîåöèðóåì ôàéë â ïàìÿòü test eax,eax ; Âûõîäèì â je clean_exit2 ; ñëó÷àå îøèáêè mov map_addr,eax ; Åñëè âñ¸ ok, ; ñîõðàíèì àäðåñ ìýïïèíãà mov esi,eax ; Óêàæåì, îòêóäà ; áðàòü äàííûå mov ebp,ebx ; Óêàæåì ðàçìåð äàííûõ call base64 ; Êîäèðóåì â base64 mov ax,0A0Dh ; Äîáàâèì ê stosw ; ïîëó÷èâøåìóñÿ mov ax,0A0Dh ; ïèñüìó stosw ; CRLF mov al,"." ; . stosb ; CRLF mov ax,0A0Dh ; stosw ; mov eax,edi ; Âû÷èñëèì ðàçìåð sub eax,al_mem ; ïîëó÷èâøåãîñÿ ïèñüìà, mov ebx,eax ; è ñîõðàíèì åãî â ebx xor esi,esi invoke WSAStartup,0101h,addr wsa ; Èíèöèàëèçèðóåì winsock test eax,eax ; Âûõîäèì â jne clean_exit1 ; ñëó÷àå îøèáêè invoke socket,AF_INET,SOCK_STREAM,0 ; Ñîçäàåì ñîêåò inc eax ; Âûõîäèì je clean_exit ; åñëè dec eax ; îøèáêà mov sock,eax ; Åñëè ok - ñîõðàíèì ; åãî äåñêðèïòîð ;push offset smtp_server ; Ïðåîáðàçóåì àäðåñ ;call inet_addr ; ñåðâåðà mov sin.sin_family,AF_INET ; Çàïîëíèì ñòðóêòóðó mov sin.sin_port,1900h ; sockaddr_in invoke gethostbyname,offset Server mov eax,dword ptr [eax + 12] mov eax,dword ptr [eax] mov eax,dword ptr [eax] mov sin.sin_addr,eax ; invoke connect,sock,addr sin,10h ; Êîííåêòèìñÿ ê ñåðâåðó inc eax ; Åñëè îøèáêà je shtdown ; âûõîäèì call read_buf ; Ïîëó÷èì è inc eax ; ïðîâåðèì je shtdown ; îòâåò ñåðâåðà cmp dword ptr [buf],"220" ; jne shtdown ; invoke send,sock,addr helo_0,helo_0_sz,esi ; Ïîøëåì ïðèâåòñòâèå inc eax ; Âûõîä, je shtdown ; åñëè îøèáêà call read_buf ; Ïðîâåðèì îòâåò ñåðâåðà inc eax je shtdown cmp dword ptr buf,"250" jne shtdown invoke send,sock,addr AUTH,AUTH_sz,esi ; Ïîøëåì AUTH inc eax ; Âûõîä, je shtdown ; åñëè îøèáêà call read_buf ; Ïðîâåðèì îòâåò ñåðâåðà inc eax je shtdown cmp dword ptr buf,"250 " jne shtdown invoke send,sock,addr Login,Login_sz,esi ; Ïîøëåì Login inc eax ; Âûõîä, je shtdown ; åñëè îøèáêà call read_buf ; Ïðîâåðèì îòâåò ñåðâåðà inc eax je shtdown cmp dword ptr buf,"250 " jne shtdown invoke send,sock,addr Pass,Pass_sz,esi ; Ïîøëåì Pass inc eax ; Âûõîä, je shtdown ; åñëè îøèáêà call read_buf ; Ïðîâåðèì îòâåò ñåðâåðà inc eax je shtdown cmp dword ptr buf,"250 " jne shtdown invoke send,sock,addr mail_fr,mail_fr_sz,esi ; MAIL FROM inc eax je shtdown call read_buf inc eax je shtdown cmp dword ptr buf,"250 " jne shtdown invoke send,sock,addr rcpt_to,rcpt_to_sz,esi ; RCPT TO inc eax je shtdown call read_buf inc eax je shtdown cmp dword ptr buf,"250 " jne shtdown invoke send,sock,addr data_,data_sz,esi ; DATA inc eax je shtdown call read_buf inc eax je shtdown cmp dword ptr buf,"354 " jne shtdown invoke send,sock,al_mem,ebx,esi ; Ïîñûëàåì ïèñüìî inc eax je shtdown call read_buf shtdown: invoke shutdown,sock,esi ; Ðàçðûâàåì ñîåäèíåíèå invoke closesocket,sock ; è çàêðûâàåì ñîêåò clean_exit: invoke WSACleanup clean_exit1: invoke UnmapViewOfFile,map_addr ; Âûãðóçèì ôàéë èç ïàìÿòè clean_exit2: invoke CloseHandle,map_h ; Çàêðîåì õýíäë ìýïïèíãà clean_exit3: invoke LocalFree,al_mem ; Îñâîáîäèì ïàìÿòü â êó÷å invoke CloseHandle,file_h ; Çàêðîåì ôàéë exit: invoke ExitProcess,esi ; Âûõîäèì èç ïðîãðàììû end start
нормальный ???? если ты мне дашь на масм нормальный буду рад ..честно ..=) ладно выше уже фигня !!! Вот что вот новый файл ..но там после аутентификации ...когда присоединяется файл ошибка 554 SMTP error синхронизация ... почитал описание ..но проблему не меняет ... делал много вариантов
Похоже на то, что вы шлете следующую команду smtp, не дождавшись ответа на предыдущую PS. Обычно так делают спамеры, вот и почтовик рвет коннект
дык это я же и написал !!! Я читать умею английский =) проблема в том что даже с ответом отдельным не проходит ..я выложил начальный вариант , а вообще я ранее всегда слал файл вместе с инфой ..и все ок было , а щас вот так ...просто может у кого идея по разделению или еще чего ... тупо !! вообще можно спам машину переделать и все ..тупое граничение , если это оно
вот Base64 под МАСМ Код (Text): b64: .newline: call b64_Store_crlf b64_Encode: mov edx,20 b64_Outer: dec edx je b64_Newline lodsd dec esi inc ebp bswap eax mov ecx,4 b64_Inner: rol eax,6 and al,3Fh cmp al,3Eh jb b64_Testchar shl al,2 sub al,((3Eh shl 2)+'A'-'+') and 0FFh b64_Testchar: sub al,4 cmp al,'0' jnl b64_Store add al,'A'+4 cmp al,'Z' jbe b64_Store add al,'a'-'Z'-1 b64_Store: stosb dec ebp loopne b64_Inner jne b64_Outer mov al,'=' rep stosb ret b64_Store_crlf: mov ax,0A0Dh stosw ret я не знаю, преобразует ли МАСМ такое как ((3Eh shl 2)+'A'-'+') and 0FFh в нужное число... если нет, то высчитай это вручную и подправь у меня есть работающий исходник под ФАСМ, но под МАСМ нету
100% рабочая версия Код (Text): ; Base64 encode, Pinch version Base64_Pinch proc uses esi ebx lpSrc, lpDst, Len: DWORD mov esi, lpSrc mov edi, lpDst mov ecx, Len xor eax, eax xor ebx, ebx @gen: lodsb shl eax, 8 loop @@2 shl eax, 8 jmp @@4 @@2: lodsb shl eax, 8 loop @@3 jmp @@4 @@3: lodsb dec ecx @@4: push ecx push 4 pop ecx push ecx @@: rol edx, 8 mov dl, al and dl, 00111111B shr eax, 6 loop @B pop ecx @edx_conv: cmp dl, 62 jae dl_62_63 cmp dl, 51 ja digit_0_9 add dl, 'A' cmp dl, 'Z' jbe @F add dl, 'a'-'Z'-1 @@: jmp rotate_edx digit_0_9: add dl, 30h-52 jmp rotate_edx dl_62_63: sub dl, 62 shl dl, 2 add dl, 43 rotate_edx: rol edx, 8 loop @edx_conv xchg eax, edx stosd xchg eax, edx pop ecx ; CRLF inc ebx inc ebx cmp ebx, 24h jnz @next xor ebx, ebx mov al, 0ah stosb @next: or ecx, ecx jnz @gen ret Base64_Pinch endp
Спасибо !!!! ))))) у меня та тоже пож fasm есть , мне жаль что тот чел под масм не делал версию.. Я уже нашел вариант с кодировкой рабочей там терь думает что код этот спам машина ..пока не выходит у меня .. (((( ......Спасибо еще раз
100% рабочая версия Код (Text): include \masm32\head.inc include \masm32\include\ws2_32.inc includelib \masm32\lib\ws2_32.lib Base64_Pinch proto :DWORD,:DWORD,:DWORD .data SOCKADDR STRUCT sin_family WORD ? sin_port WORD ? sin_addr in_addr <> sin_zero BYTE 8 dup (?) SOCKADDR ENDS wsadata WSADATA <> s_addr SOCKADDR <> sock dd 0 r_buf db 512 dup(0) ReadFileHandler dd ? ; Хендлер файла для чтения. GlobalCounter dd ? ; Счетчик количества байт. StartAdrBuff dd ? ; Стартовый адрес буфера StartAdrBuff_mail dd ? ; Стартовый адрес буфера FinalAdrBuff_mail dd ? ; Финальный адрес буфера gl_mail equ "mail@mail.ru" ; Переменная email адреса s_helo db "HELO EHLO",0dh,0ah szhelo equ $ - offset s_helo s_from db "MAIL FROM:<",gl_mail,">",0dh,0ah szfrom equ $ - offset s_from s_to db "RCPT TO: <",gl_mail,">",0dh,0ah szto equ $ - offset s_to s_data db "DATA",0dh,0ah szdata equ $ - offset s_data s_body db "TO: ",gl_mail,0dh,0ah ; кому db "Subject: Test",0dh,0ah db "FROM: ",gl_mail,0dh,0ah ; от кого db "MIME-Version: 1.0",0dh,0ah db "Content-Type: multipart/mixed; boundary=",22h,"1",22h,0dh,0ah db "--1",0dh,0ah db "Content-Type: application/octet-stream; name=",22h,"file.dat",22h,0dh,0ah db "Content-Disposition: attachment; filename=",22h,"file.dat",22h,0dh,0ah db "Content-Transfer-Encoding: base64",0dh,0ah,0dh,0ah size_head equ $ - offset s_body ; Размер заголовка письма str_in@ db 'Проводим полное тестирование 123456789' ; Кодируемая строка str_in_len@ equ $-str_in@ ; длинна строки s_body_end db "--1",0dh,0ah db 0dh,0ah,".",0dh,0ah size_final equ $ - offset s_body_end ; szbody equ $ - offset s_body szheaders equ $ - offset s_headers s_quit db "QUIT",0dh,0ah szquit equ $ - s_quit crlf db 13,10,0 ;IP db "192.168.1.12",0 ;IP db "199.149.62.15",0 ; www.e-mail.ru ;IP db "195.161.118.50",0 ; www.e-mail.ru IP db "194.67.23.111",0 ; www.mail.ru ;IP db 20 dup(0) .code start: invoke VirtualAlloc,NULL,20000,MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE ; Выделяем рабочий буфер для файла данных mov edi,eax ; Получаем в edi адрес выделенной памяти. mov StartAdrBuff_mail,eax ; Сохраняем адрес выделенной памяти. mov esi,offset s_body ; Передаем в буфер заголовок письма mov ecx,size_head ; Размер передаваемых данных rep movsb invoke Base64_Pinch,offset str_in@,edi,str_in_len@ mov esi,offset s_body_end ; Передаем в буфер завершающую часть письма. mov ecx,size_final ; Размер передаваемых данных rep movsb mov FinalAdrBuff_mail,edi ; Сохраняем финальный адрес буфера invoke WSAStartup,101h,offset wsadata invoke socket,AF_INET,SOCK_STREAM,0 mov sock,eax mov s_addr.sin_family,AF_INET invoke htons,25 mov s_addr.sin_port,ax invoke inet_addr,ADDR IP mov s_addr.sin_addr,eax invoke connect,sock,addr s_addr,sizeof s_addr invoke recv,sock,addr r_buf,512,0 invoke send,sock,addr s_helo,szhelo,0 call recvlp invoke send,sock,addr s_from,szfrom,0 call recvlp invoke send,sock,addr s_to,szto,0 call recvlp invoke send,sock,addr s_data,szdata,0 call recvlp mov eax,FinalAdrBuff_mail ; финальный адрес буфера sub eax,dword ptr StartAdrBuff_mail ; расчет размера invoke send,sock,StartAdrBuff_mail,eax,0 call recvlp invoke send,sock,addr s_quit,szquit,0 call recvlp invoke closesocket,sock invoke WSACleanup invoke ExitProcess,0 ret ;------------CLEAR BUFFER------------ clear: mov ecx,512 lea edi,offset r_buf r: mov byte ptr [edi],00h inc edi loop r ret recvlp: invoke recv,sock,addr r_buf,512,0 .IF EAX!=SOCKET_ERROR invoke StdOut,ADDR r_buf .ENDIF call clear ret ; Base64 encode, Pinch version Base64_Pinch proc uses esi ebx lpSrc, lpDst, Len: DWORD mov esi, lpSrc mov edi, lpDst mov ecx, Len xor eax, eax xor ebx, ebx @gen: lodsb shl eax, 8 loop @@2 shl eax, 8 jmp @@4 @@2: lodsb shl eax, 8 loop @@3 jmp @@4 @@3: lodsb dec ecx @@4: push ecx push 4 pop ecx push ecx @@: rol edx, 8 mov dl, al and dl, 00111111B shr eax, 6 loop @B pop ecx @edx_conv: cmp dl, 62 jae dl_62_63 cmp dl, 51 ja digit_0_9 add dl, 'A' cmp dl, 'Z' jbe @F add dl, 'a'-'Z'-1 @@: jmp rotate_edx digit_0_9: add dl, 30h-52 jmp rotate_edx dl_62_63: sub dl, 62 shl dl, 2 add dl, 43 rotate_edx: rol edx, 8 loop @edx_conv xchg eax, edx stosd xchg eax, edx pop ecx ; CRLF inc ebx inc ebx cmp ebx, 24h jnz @next xor ebx, ebx mov al, 0ah stosb @next: or ecx, ecx jnz @gen ret Base64_Pinch endp end start
Сделал свой второй вариант все работает супер))))))) ... там дата слать отдельно надобыло ..Закрываем тему