SendMail ошибка отправка файла

Тема в разделе "WASM.NETWORKS", создана пользователем calidus, 28 сен 2007.

  1. calidus

    calidus Member

    Публикаций:
    0
    Посмотрите ПЛЗ где ошибка Письмо приходит файла нету (((((
     
  2. calidus

    calidus Member

    Публикаций:
    0
    =( никто не увидел...
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Не у каждого есть терпение, и стоко свободного времени чтоб покапаться в чужом коде.
    Советую почитать rfc по протоколу smtp, а если совсем уж лень, то берёшь любой почтовый клиент, отправляешь письмо, не забыв перед этим врубить сниффер(советую ethereal). Потом сохраняешь данные, делаешь точно так-же через свою прогу, потом данные сниффера сравниваешь и смотришь гиде косяк. ;)
     
  4. calidus

    calidus Member

    Публикаций:
    0
    да я понимаю ...но код не сложный сам по себе но у меня голова болит от него уже иногда взгляд другого нужен...ошибка ндето в прикреплении файла а где не знаю ...((((( смотрю каждый день пробую но чето не идет а бросать не охота, там вроде как у всех
     
  5. slow

    slow New Member

    Публикаций:
    0
    заголовки письма от тела письма отделяются пустой строкой, у тебя этого не увидел
     
  6. calidus

    calidus Member

    Публикаций:
    0
    CrLf equ 0dh,0ah и 0 на конце не достаточно ??? хм попробовал не меняет роли ...чето не то с прикреплением но млин буффер то динамический для файла
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    добавь аутентификацию и юзай ;)
     
  8. calidus

    calidus Member

    Публикаций:
    0
    ок переведу доделаю ...я на масме и гет хост тогда ...
     
  9. calidus

    calidus Member

    Публикаций:
    0
    Переводил на Масм ....все равно косяки дето ...млин голова кругом

    Код (Text):
    1. ; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    2. ; Sending mail with attach in FASM
    3. ;         Created by Ct757
    4. ; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    5. ;
    6. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7. ; Çäåñü ÿ õî÷ó ïîêàçàòü, êàê ìîæíî îòïðàâèòü ïèñüìî ñ âëîæåíèåì
    8. ; íàïðÿìóþ ÷åðåç SMTP-ñåðâåð (â äàííîì ñëó÷àå smtp.mail.ru)
    9. ;  ïðèíöèïå, êîìàíäû òå æå, ÷òî è ïðè ïîñûëêå îáû÷íîãî ïèñüìà,
    10. ; ðàçíèöà òîëüêî â òîì, ÷òî àòòà÷ íóæíî çàêîäèðîâàòü ïî àëãîðèòìó
    11. ; base64, à òàê æå óêàçàòü íåêîòîðûå äîïîëíèòåëüíûå ïóíêòû â çàãîëîâêå ïèñüìà
    12. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    13.  
    14. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    15. ; ß íå áóäó â ïîäðîáíîñòÿõ îáúÿñíÿòü SMTP-êîìàíäû, åñëè âû èõ íå çíàåòå ñìîòðèòå RFC
    16. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    17. .486
    18. .model flat, stdcall
    19. option casemap:none
    20.    include c:\masm32\include\kernel32.inc
    21.    includelib c:\masm32\lib\kernel32.lib
    22.    include c:\masm32\include\windows.inc
    23.       includelib c:\masm32\lib\wsock32.lib
    24.    include c:\masm32\include\wsock32.inc
    25.    base64 PROTO
    26.    read_buf PROTO
    27.    CrLf     equ 0dh,0ah
    28. .data
    29.  
    30.  
    31.  ; smtp_server  db '194.67.23.111',0                    ; IP-àäðåñ smtp.mail.ru
    32.  
    33.   helo_0       db 'EHLO 0',13,10                    ; Êîìàíäà helo
    34.   helo_0_sz    = $ - helo_0                     ;
    35.  
    36.   mail_fr      db 'MAIL FROM: ччч@mail.ru',13,10         ; Îò êîãî ïèñüìî
    37.   mail_fr_sz   = $ - mail_fr                        ;
    38.  
    39.   rcpt_to      db 'RCPT TO: ччч@mail.ru',13,10          ; Êîìó îòïðàâëÿòü
    40.   rcpt_to_sz   = $ - rcpt_to                        ;
    41.  
    42.   data_        db 'DATA',13,10                      ; Êîìàíäà data
    43.   data_sz      = $ - data_                      ;
    44.  
    45. ;---------- Login/Pass (Base64 Encode) -------------
    46. Login       db  'логин',CrLf,0
    47. Login_sz = $ - Login
    48. Pass        db  'пасс',CrLf,0
    49. Pass_sz = $ - Pass
    50. Server      db  'smtp.mail.ru',0
    51. ;------------- MailServer's commands ---------------
    52. ;HELO   db 'EHLO %s',CrLf,0
    53. AUTH    db 'AUTH LOGIN',CrLf,0
    54. AUTH_sz    = $ - AUTH
    55. DATA    db 'DATA',CrLf,0
    56. ENDD    db CrLf,'.',CrLf,0
    57. QUIT    db 'QUIT',CrLf,0
    58. ;---------------------------------------------------
    59. ;---------------------------------------------------
    60. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    61. ; Çàãîëîâîê è òåêñò ïèñüìà
    62. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    63.  
    64.   message      db "From: Bill Gates <ччч@mail.ru>",13,10,0                   ; Îò êîãî
    65.         db  "Subject: Test MESSAGE",13,10   ,0          ; Òåìà
    66.         db  "To: TEST <ччч@mail.ru>",13,10,0                    ; Êîìó
    67.         db  "MIME-Version: 1.0",13,10   ,0              ; Âåðñèÿ MIME
    68.         db  "Content-Type: multipart/mixed;",13,10,0                ; Òèï ñîäåðæèìîãî
    69.         db  'boundary="--ct757"',13,10,13,10,0              ; Ðàçäåëèòåëü
    70.         db  "----ct757",13,10,0
    71.         db  "Content-Type: text/plain; charset=Windows-1251",13,10,0        ; Ñîäåðæèìîå: òåêñò,
    72.         db  "Content-Transfer-Encoding: 8bit",13,10,13,10,0         ; êîäèðîâêà Win-1251
    73.         db  "Hello, this is the test message with attachment.",13,10,13,10,0    ; Òåêñò ïèñüìà
    74.         db  "----ct757",13,10,0
    75.         db  'Content-Type: application/octet-stream; name="2.txt"',13,10,0  ; Ñîäåðæèìîå: âëîæåíèå
    76.         db  'Content-Disposition: attachment; filename="2.txt"',13,10,0 ; èìÿ ôàéëà - test.rar
    77.          db "Content-Transfer-Encoding: base64",13,10,13,10,0           ; Ïîÿñíÿåì, ÷òî çàêîäèðîâàíî
    78.                                             ; ñ ïîìîùüþ base64
    79.  
    80.   message_sz   = $ - message                                ; Ðàçìåð ïèñüìà âìåñòå ñ
    81.                                             ; çàãîëîâêîì (áåç âëîæåíèÿ!)
    82.  
    83.  
    84.   file_name    db "C:\2.txt",0                          ; Ôàéë, êîòîðûé íóæíî îòïðàâèòü
    85.  
    86.   sock         dd 0                                 ; Äåñêðèïòîð ñîêåòà
    87.   file_h       dd 0                                 ; Äåñêðèïòîð ôàéëà
    88.   map_h        dd 0                                 ; Äåñêðèïòîð ìýïïèíãà
    89.   map_addr     dd 0                                 ; Àäðåñ ìýïïèíãà                                                                 ;
    90.   al_mem       dd 0                                 ; Àäðåñ ïàìÿòè â êó÷å
    91.  
    92.   buf_sz       = 100h                                   ; Ðàçìåð áóôôåðà
    93.  ; buf   db buf_sz                              ; Áóôôåð äëÿ recv
    94.   buf        db 100h dup (?)
    95. .data?
    96.   wsa          WSADATA <?>                              ; Íåîáõîäèìûå
    97.   sin          sockaddr_in  <?>                         ; ñòðóêòóðû
    98.  
    99. .code
    100. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    101. ; base64 encoder without dictionary by RT Fishel
    102. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    103. ;
    104. ; ebp = length, esi -> src buffer, edi -> dst buffer
    105.  
    106.   base64 PROC
    107.     encode:
    108.       push     (76 shr 2)+1
    109.       pop      edx
    110.  
    111.     outer:
    112.       dec      edx
    113.       je       newline
    114.       lodsd
    115.       dec      esi
    116.       inc      ebp
    117.       bswap    eax
    118.       mov      ecx,4
    119.  
    120.     inner:
    121.       rol      eax,6
    122.       and      al,3Fh
    123.       cmp      al,3Eh
    124.       jb       testchar
    125.       shl      al,2
    126.       sub      al,((3Eh shl 2)+"A"-"+") and 0FFh
    127.  
    128.     testchar:
    129.       sub      al,4
    130.       cmp      al,"0"
    131.       jnl      store
    132.       add      al,"A"+4
    133.       cmp      al,"Z"
    134.       jbe      store
    135.       add      al,"a"-"Z"-1
    136.  
    137.     store:
    138.       stosb
    139.       dec      ebp
    140.       loopne   inner
    141.       jne      outer
    142.       mov      al,"="
    143.       rep      stosb
    144.       ret
    145.  
    146.     store_crlf:
    147.       mov      ax,0A0Dh
    148.       stosw
    149.       ret
    150.  
    151.     newline:
    152.       jmp     store_crlf
    153.       jmp encode
    154. base64 ENDP
    155. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    156. ; Ïðîöåäóðà ÷òåíèÿ â áóôôåð èç ñîêåòà
    157. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    158.  
    159.   read_buf PROC
    160.       invoke   recv,sock,addr buf,sizeof buf,esi
    161.       ret
    162. read_buf ENDP
    163.  
    164. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    165. ; Íà÷àëî îñíîâíîé ïðîãðàììû
    166. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    167.  
    168.   start:
    169.       xor      esi,esi
    170.  
    171.       invoke   CreateFile,addr file_name,GENERIC_WRITE or GENERIC_READ,\        ; Îòêðîåì íóæíûé
    172.          esi,esi,OPEN_EXISTING,esi,esi                  ; íàì ôàéë
    173.       inc      eax                              ; Âûõîäèì â
    174.       je       exit                             ; ñëó÷àå îøèáêè
    175.       dec      eax                              ; Åñëè âñ¸ îê,
    176.       mov      file_h,eax                           ; ñîõðàíèì åãî õýíäë
    177.  
    178.       invoke   GetFileSize,eax,esi                      ; Óçíàåì ðàçìåð ôàéëà
    179.       mov      ebx,eax                              ; Ñîõðàíèì åãî â ebx
    180.       rol      eax,1                                ; Óìíîæèì ðàçìåð íà äâà
    181.                                         ; (íà âñÿêèé ñëó÷àé, ò.ê.
    182.                                         ; ðàçìåð çàêîäèðîâàííîãî
    183.                                         ; â base64 ôàéëà âñåãäà áîëüøå)
    184.       add      eax,message_sz                           ; Ïðèáàâèì ê ïîëó÷èâøåìóñÿ
    185.                                         ; ðåçóëüòàòó ðàçìåð óæå
    186.                                         ; èìåþùåãîñÿ ïèñüìà
    187.  
    188.       invoke   LocalAlloc,LMEM_FIXED,eax                    ; Âûäåëèì ìåñòî â êó÷å
    189.       test     eax,eax                              ; Åñëè îøèáêà -
    190.       je       exit                             ; âûõîäèì, èíà÷å
    191.       mov      al_mem,eax                           ; ñîõðàíèì àäðåñ
    192.  
    193.       mov      edi,eax                              ; Ïåðåìåñòèì â êó÷ó
    194.       mov      esi,offset message                           ; ïîäãîòîâëåííûé
    195.       mov      ecx,message_sz                           ; çàãîëîâîê è òåêñò
    196.       rep      movsb                                ; ïèñüìà
    197.  
    198.       xor      esi,esi
    199.  
    200.       invoke   CreateFileMapping,file_h,esi,PAGE_READWRITE,esi,ebx,esi    ; Ñîçäàäèì file mapping
    201.       test     eax,eax                              ; Âûõîäèì â
    202.       je       clean_exit3                          ; ñëó÷àå îøèáêè
    203.       mov      map_h,eax                            ; Åñëè âñ¸ ok, ñîõðàíèì õýíäë
    204.  
    205.       invoke   MapViewOfFile,eax,2,esi,esi,esi                  ; Ñïðîåöèðóåì ôàéë â ïàìÿòü
    206.       test     eax,eax                              ; Âûõîäèì â
    207.       je       clean_exit2                          ; ñëó÷àå îøèáêè
    208.       mov      map_addr,eax                         ; Åñëè âñ¸ ok,
    209.                                         ; ñîõðàíèì àäðåñ ìýïïèíãà
    210.  
    211.       mov      esi,eax                              ; Óêàæåì, îòêóäà
    212.                                         ; áðàòü äàííûå
    213.       mov      ebp,ebx                              ; Óêàæåì ðàçìåð äàííûõ
    214.       call     base64                           ; Êîäèðóåì â base64
    215.  
    216.       mov      ax,0A0Dh                             ; Äîáàâèì ê
    217.       stosw                                 ; ïîëó÷èâøåìóñÿ
    218.       mov      ax,0A0Dh                             ; ïèñüìó
    219.       stosw                                 ; CRLF
    220.       mov      al,"."                               ; .
    221.       stosb                                 ; CRLF
    222.       mov      ax,0A0Dh                             ;
    223.       stosw                                 ;
    224.  
    225.       mov      eax,edi                              ; Âû÷èñëèì ðàçìåð
    226.       sub      eax,al_mem                           ; ïîëó÷èâøåãîñÿ ïèñüìà,
    227.       mov      ebx,eax                              ; è ñîõðàíèì åãî â ebx
    228.  
    229.       xor      esi,esi
    230.  
    231.       invoke    WSAStartup,0101h,addr wsa                       ; Èíèöèàëèçèðóåì winsock
    232.       test     eax,eax                              ; Âûõîäèì â
    233.       jne      clean_exit1                          ; ñëó÷àå îøèáêè
    234.  
    235.       invoke   socket,AF_INET,SOCK_STREAM,0                 ; Ñîçäàåì ñîêåò
    236.       inc      eax                              ; Âûõîäèì
    237.       je       clean_exit                           ; åñëè
    238.       dec      eax                              ; îøèáêà
    239.       mov      sock,eax                         ; Åñëè ok - ñîõðàíèì
    240.                                         ; åãî äåñêðèïòîð
    241.  
    242.       ;push     offset smtp_server                          ; Ïðåîáðàçóåì àäðåñ
    243.       ;call     inet_addr                           ; ñåðâåðà
    244.  
    245.       mov      sin.sin_family,AF_INET                   ; Çàïîëíèì ñòðóêòóðó
    246.       mov      sin.sin_port,1900h
    247.                             ; sockaddr_in
    248. invoke  gethostbyname,offset Server
    249. mov eax,dword ptr [eax + 12]
    250. mov eax,dword ptr [eax]
    251. mov eax,dword ptr [eax]
    252.       mov      sin.sin_addr,eax                     ;
    253.  
    254.       invoke   connect,sock,addr sin,10h                        ; Êîííåêòèìñÿ ê ñåðâåðó
    255.       inc      eax                              ; Åñëè îøèáêà
    256.       je       shtdown                              ; âûõîäèì
    257.  
    258.       call     read_buf                             ; Ïîëó÷èì è
    259.       inc      eax                              ; ïðîâåðèì
    260.       je       shtdown                              ; îòâåò ñåðâåðà
    261.       cmp      dword ptr [buf],"220"                        ;
    262.       jne      shtdown                              ;
    263.  
    264.       invoke   send,sock,addr helo_0,helo_0_sz,esi              ; Ïîøëåì ïðèâåòñòâèå
    265.       inc      eax                              ; Âûõîä,
    266.       je       shtdown                              ; åñëè îøèáêà
    267.  
    268.       call     read_buf                             ; Ïðîâåðèì îòâåò ñåðâåðà
    269.       inc      eax
    270.       je       shtdown
    271.       cmp      dword ptr buf,"250"
    272.       jne      shtdown
    273.      
    274.  
    275.       invoke   send,sock,addr AUTH,AUTH_sz,esi              ; Ïîøëåì AUTH
    276.       inc      eax                              ; Âûõîä,
    277.       je       shtdown                              ; åñëè îøèáêà
    278.      
    279.       call     read_buf                             ; Ïðîâåðèì îòâåò ñåðâåðà
    280.       inc      eax
    281.       je       shtdown
    282.       cmp      dword ptr buf,"250 "
    283.       jne      shtdown
    284.      
    285.       invoke   send,sock,addr Login,Login_sz,esi                ; Ïîøëåì Login
    286.       inc      eax                              ; Âûõîä,
    287.       je       shtdown                              ; åñëè îøèáêà
    288.      
    289.       call     read_buf                             ; Ïðîâåðèì îòâåò ñåðâåðà
    290.       inc      eax
    291.       je       shtdown
    292.       cmp      dword ptr buf,"250 "
    293.       jne      shtdown
    294.      
    295.       invoke   send,sock,addr Pass,Pass_sz,esi              ; Ïîøëåì Pass
    296.       inc      eax                              ; Âûõîä,
    297.       je       shtdown                              ; åñëè îøèáêà
    298.      
    299.       call     read_buf                             ; Ïðîâåðèì îòâåò ñåðâåðà
    300.       inc      eax
    301.       je       shtdown
    302.       cmp      dword ptr buf,"250 "
    303.       jne      shtdown    
    304.      
    305.  
    306.       invoke   send,sock,addr mail_fr,mail_fr_sz,esi                ; MAIL FROM
    307.       inc      eax
    308.       je       shtdown
    309.  
    310.       call     read_buf
    311.       inc      eax
    312.       je       shtdown
    313.       cmp      dword ptr buf,"250 "
    314.       jne      shtdown
    315.  
    316.       invoke   send,sock,addr rcpt_to,rcpt_to_sz,esi                ; RCPT TO
    317.       inc      eax
    318.       je       shtdown
    319.  
    320.       call     read_buf
    321.       inc      eax
    322.       je       shtdown
    323.       cmp      dword ptr buf,"250 "
    324.       jne      shtdown
    325.  
    326.       invoke   send,sock,addr data_,data_sz,esi                 ; DATA
    327.       inc      eax
    328.       je       shtdown
    329.  
    330.       call     read_buf
    331.       inc      eax
    332.       je       shtdown
    333.       cmp      dword ptr buf,"354 "
    334.       jne      shtdown
    335.  
    336.       invoke   send,sock,al_mem,ebx,esi                 ; Ïîñûëàåì ïèñüìî
    337.       inc      eax
    338.       je       shtdown
    339.  
    340.       call     read_buf
    341.  
    342.   shtdown:
    343.       invoke   shutdown,sock,esi                        ; Ðàçðûâàåì ñîåäèíåíèå
    344.       invoke   closesocket,sock                     ; è çàêðûâàåì ñîêåò
    345.  
    346.   clean_exit:
    347.       invoke   WSACleanup
    348.  
    349.   clean_exit1:
    350.       invoke   UnmapViewOfFile,map_addr                 ; Âûãðóçèì ôàéë èç ïàìÿòè
    351.  
    352.   clean_exit2:
    353.       invoke   CloseHandle,map_h                        ; Çàêðîåì õýíäë ìýïïèíãà
    354.  
    355.   clean_exit3:
    356.       invoke   LocalFree,al_mem                     ; Îñâîáîäèì ïàìÿòü â êó÷å
    357.       invoke   CloseHandle,file_h                       ; Çàêðîåì ôàéë
    358.  
    359.   exit:
    360.       invoke   ExitProcess,esi                          ; Âûõîäèì èç ïðîãðàììû
    361. end start
     
  10. grinay

    grinay New Member

    Публикаций:
    0
    Еп-возьми нормальный base_64 который уже давным давно функционирует)У тебя уета какаято)
     
  11. calidus

    calidus Member

    Публикаций:
    0
    нормальный ???? если ты мне дашь на масм нормальный буду рад ..честно ..=) ладно выше уже фигня !!!

    Вот что вот новый файл ..но там после аутентификации ...когда присоединяется файл ошибка 554 SMTP error синхронизация ...
    почитал описание ..но проблему не меняет ... делал много вариантов

     
  12. SLab

    SLab New Member

    Публикаций:
    0
    Похоже на то, что вы шлете следующую команду smtp, не дождавшись ответа на предыдущую
    PS. Обычно так делают спамеры, вот и почтовик рвет коннект
     
  13. calidus

    calidus Member

    Публикаций:
    0
    дык это я же и написал !!! Я читать умею английский =) проблема в том что даже с ответом отдельным не проходит ..я выложил начальный вариант , а вообще я ранее всегда слал файл вместе с инфой ..и все ок было , а щас вот так ...просто может у кого идея по разделению или еще чего ... тупо !! вообще можно спам машину переделать и все ..тупое граничение , если это оно
     
  14. SLab

    SLab New Member

    Публикаций:
    0
    в конфиге екзима
    поставить
    smtp_enforce_sync = false
     
  15. calidus

    calidus Member

    Публикаций:
    0
    дык я не себе шлю !! )))) еслиб у меня личный сервак и туда я б отключил
     
  16. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    вот Base64 под МАСМ:)

    Код (Text):
    1. b64:
    2. .newline:
    3.         call    b64_Store_crlf
    4.  
    5. b64_Encode:
    6.         mov edx,20
    7.  
    8. b64_Outer:
    9.         dec     edx
    10.         je      b64_Newline
    11.         lodsd
    12.         dec     esi
    13.         inc     ebp
    14.         bswap   eax
    15.         mov     ecx,4
    16.  
    17. b64_Inner:
    18.         rol     eax,6
    19.         and     al,3Fh
    20.         cmp     al,3Eh
    21.         jb      b64_Testchar
    22.         shl     al,2
    23.         sub     al,((3Eh shl 2)+'A'-'+') and 0FFh
    24.  
    25. b64_Testchar:
    26.         sub     al,4
    27.         cmp     al,'0'
    28.         jnl     b64_Store
    29.         add     al,'A'+4
    30.         cmp     al,'Z'
    31.         jbe     b64_Store
    32.         add     al,'a'-'Z'-1
    33.  
    34. b64_Store:
    35.         stosb
    36.         dec     ebp
    37.         loopne  b64_Inner
    38.         jne     b64_Outer
    39.         mov     al,'='
    40.         rep     stosb
    41.         ret
    42.  
    43. b64_Store_crlf:
    44.         mov     ax,0A0Dh
    45.         stosw
    46.         ret
    я не знаю, преобразует ли МАСМ такое как ((3Eh shl 2)+'A'-'+') and 0FFh в нужное число... если нет, то высчитай это вручную и подправь:)
    у меня есть работающий исходник под ФАСМ, но под МАСМ нету
     
  17. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    100% рабочая версия

    Код (Text):
    1. ; Base64 encode, Pinch version
    2.  
    3. Base64_Pinch proc uses esi ebx lpSrc, lpDst, Len: DWORD
    4.  
    5.         mov     esi, lpSrc
    6.         mov     edi, lpDst
    7.         mov     ecx, Len
    8.  
    9.         xor     eax, eax
    10.         xor     ebx, ebx
    11.  
    12. @gen:
    13.         lodsb
    14.         shl     eax, 8
    15.         loop    @@2
    16.         shl     eax, 8
    17.         jmp     @@4
    18. @@2:
    19.         lodsb
    20.         shl     eax, 8
    21.         loop    @@3
    22.         jmp     @@4
    23. @@3:          
    24.         lodsb
    25.         dec     ecx
    26. @@4:          
    27.         push    ecx
    28.         push    4
    29.         pop     ecx
    30.         push    ecx
    31. @@:
    32.         rol     edx, 8
    33.         mov     dl, al
    34.         and     dl, 00111111B        
    35.         shr     eax, 6
    36.         loop    @B
    37.  
    38.         pop     ecx
    39.  
    40. @edx_conv:
    41.         cmp     dl, 62
    42.         jae     dl_62_63
    43.         cmp     dl, 51
    44.         ja      digit_0_9
    45.         add     dl, 'A'
    46.         cmp     dl, 'Z'
    47.         jbe     @F
    48.         add     dl, 'a'-'Z'-1
    49. @@:
    50.         jmp     rotate_edx
    51. digit_0_9:
    52.         add     dl, 30h-52
    53.         jmp     rotate_edx
    54. dl_62_63:
    55.         sub     dl, 62
    56.         shl     dl, 2
    57.         add     dl, 43
    58. rotate_edx:
    59.         rol     edx, 8
    60.         loop    @edx_conv
    61.  
    62.         xchg    eax, edx
    63.         stosd
    64.         xchg    eax, edx
    65.  
    66.         pop     ecx
    67.  
    68.         ; CRLF
    69.         inc     ebx
    70.         inc     ebx
    71.         cmp     ebx, 24h
    72.         jnz     @next
    73.         xor     ebx, ebx
    74.         mov     al, 0ah
    75.         stosb
    76. @next:
    77.         or      ecx, ecx
    78.         jnz     @gen
    79.  
    80.         ret
    81.  
    82.  
    83.  
    84. Base64_Pinch endp
     
  18. calidus

    calidus Member

    Публикаций:
    0
    Спасибо !!!! ))))) у меня та тоже пож fasm есть , мне жаль что тот чел под масм не делал версию.. Я уже нашел вариант с кодировкой рабочей там терь думает что код этот спам машина ..пока не выходит у меня .. (((( ......Спасибо еще раз
     
  19. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    100% рабочая версия

    Код (Text):
    1. include \masm32\head.inc
    2.  
    3. include \masm32\include\ws2_32.inc
    4. includelib \masm32\lib\ws2_32.lib
    5.  
    6.  
    7. Base64_Pinch proto :DWORD,:DWORD,:DWORD    
    8.  
    9.  
    10. .data
    11.     SOCKADDR STRUCT
    12.         sin_family    WORD  ?
    13.         sin_port      WORD  ?
    14.         sin_addr      in_addr   <>
    15.         sin_zero      BYTE  8 dup (?)
    16.     SOCKADDR ENDS
    17.  
    18.     wsadata WSADATA <>
    19.     s_addr  SOCKADDR    <>
    20.     sock    dd  0
    21.     r_buf   db  512 dup(0)
    22.  
    23.  
    24.         ReadFileHandler  dd ?       ; Хендлер файла для чтения.
    25.         GlobalCounter dd ?          ; Счетчик количества байт.
    26.         StartAdrBuff dd ?           ; Стартовый адрес буфера
    27.  
    28.  
    29.  
    30.  
    31.  
    32.         StartAdrBuff_mail  dd ?          ; Стартовый адрес буфера
    33.         FinalAdrBuff_mail  dd ?          ; Финальный адрес буфера
    34.  
    35.         gl_mail equ "mail@mail.ru"       ; Переменная email адреса
    36.  
    37.     s_helo  db "HELO EHLO",0dh,0ah
    38.     szhelo  equ $ - offset s_helo
    39.  
    40.     s_from  db "MAIL FROM:<",gl_mail,">",0dh,0ah
    41.     szfrom  equ $ - offset s_from
    42.  
    43.     s_to    db "RCPT TO: <",gl_mail,">",0dh,0ah
    44.     szto    equ $ - offset s_to                
    45.  
    46.     s_data  db "DATA",0dh,0ah
    47.     szdata  equ $ - offset s_data
    48.  
    49.  
    50.  
    51.     s_body  db "TO: ",gl_mail,0dh,0ah      ; кому
    52.             db "Subject: Test",0dh,0ah
    53.         db "FROM: ",gl_mail,0dh,0ah    ; от кого
    54.                 db "MIME-Version: 1.0",0dh,0ah
    55.                 db "Content-Type: multipart/mixed; boundary=",22h,"1",22h,0dh,0ah
    56.             db "--1",0dh,0ah
    57.                 db "Content-Type: application/octet-stream; name=",22h,"file.dat",22h,0dh,0ah
    58.                 db "Content-Disposition: attachment; filename=",22h,"file.dat",22h,0dh,0ah
    59.                 db "Content-Transfer-Encoding: base64",0dh,0ah,0dh,0ah
    60.  
    61.      size_head  equ $ - offset s_body         ; Размер заголовка письма
    62.  
    63.  
    64.         str_in@    db 'Проводим полное тестирование 123456789'    ; Кодируемая строка
    65.         str_in_len@ equ $-str_in@                                 ; длинна строки
    66.  
    67.  
    68.    s_body_end   db "--1",0dh,0ah
    69.             db 0dh,0ah,".",0dh,0ah
    70.  
    71.     size_final  equ $ - offset s_body_end     ;
    72.  
    73.  
    74.     szbody  equ $ - offset s_body
    75.  
    76.  
    77.     szheaders   equ $ - offset s_headers
    78.  
    79.     s_quit  db "QUIT",0dh,0ah
    80.     szquit  equ $ - s_quit
    81.  
    82.  
    83.     crlf    db 13,10,0
    84.     ;IP db "192.168.1.12",0
    85.     ;IP db "199.149.62.15",0    ; www.e-mail.ru
    86.     ;IP db "195.161.118.50",0   ; www.e-mail.ru
    87.     IP  db "194.67.23.111",0    ; www.mail.ru
    88.     ;IP db 20 dup(0)
    89.  
    90.  
    91. .code
    92.  
    93. start:
    94.         invoke VirtualAlloc,NULL,20000,MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE ; Выделяем рабочий буфер для файла данных
    95.         mov edi,eax                 ; Получаем в edi адрес выделенной памяти.
    96.         mov StartAdrBuff_mail,eax   ; Сохраняем адрес выделенной памяти.
    97.  
    98.  
    99.         mov esi,offset s_body      ; Передаем в буфер заголовок письма
    100.         mov ecx,size_head          ; Размер передаваемых данных
    101.         rep movsb              
    102.  
    103.         invoke Base64_Pinch,offset str_in@,edi,str_in_len@  
    104.  
    105.  
    106.         mov esi,offset s_body_end  ; Передаем в буфер завершающую часть письма.
    107.         mov ecx,size_final         ; Размер передаваемых данных
    108.         rep movsb
    109.          
    110.         mov FinalAdrBuff_mail,edi  ; Сохраняем финальный адрес буфера
    111.  
    112.  
    113.     invoke  WSAStartup,101h,offset wsadata
    114.  
    115.  
    116.     invoke  socket,AF_INET,SOCK_STREAM,0
    117.     mov sock,eax
    118.     mov s_addr.sin_family,AF_INET
    119.     invoke  htons,25
    120.     mov s_addr.sin_port,ax
    121.     invoke  inet_addr,ADDR  IP
    122.     mov s_addr.sin_addr,eax
    123.  
    124.  
    125.     invoke  connect,sock,addr s_addr,sizeof s_addr
    126.     invoke  recv,sock,addr r_buf,512,0
    127.  
    128.  
    129.     invoke  send,sock,addr s_helo,szhelo,0
    130.     call    recvlp
    131.  
    132.     invoke  send,sock,addr s_from,szfrom,0
    133.     call    recvlp
    134.  
    135.     invoke  send,sock,addr s_to,szto,0
    136.     call    recvlp
    137.  
    138.     invoke  send,sock,addr s_data,szdata,0
    139.     call    recvlp
    140.  
    141.  
    142.  
    143.         mov eax,FinalAdrBuff_mail           ;   финальный адрес буфера
    144.         sub eax,dword ptr StartAdrBuff_mail ;   расчет размера
    145.  
    146.     invoke  send,sock,StartAdrBuff_mail,eax,0
    147.     call    recvlp
    148.  
    149.  
    150.  
    151.  
    152.  
    153.     invoke  send,sock,addr s_quit,szquit,0
    154.     call recvlp
    155.  
    156.     invoke closesocket,sock
    157.     invoke WSACleanup
    158.  
    159.     invoke ExitProcess,0
    160.         ret
    161.  
    162.     ;------------CLEAR BUFFER------------
    163. clear:
    164.         mov ecx,512
    165.         lea edi,offset r_buf
    166. r:
    167.     mov byte ptr [edi],00h
    168.         inc edi
    169.         loop r
    170.         ret
    171. recvlp:
    172.     invoke  recv,sock,addr r_buf,512,0
    173.     .IF EAX!=SOCKET_ERROR
    174.  
    175.         invoke StdOut,ADDR r_buf
    176.  
    177.     .ENDIF
    178.     call clear
    179.         ret
    180.  
    181.  
    182.  
    183.  
    184.  
    185.  
    186.  
    187. ; Base64 encode, Pinch version
    188.  
    189. Base64_Pinch proc uses esi ebx lpSrc, lpDst, Len: DWORD
    190.  
    191.         mov     esi, lpSrc
    192.         mov     edi, lpDst
    193.         mov     ecx, Len
    194.  
    195.         xor     eax, eax
    196.         xor     ebx, ebx
    197.  
    198. @gen:
    199.         lodsb
    200.         shl     eax, 8
    201.         loop    @@2
    202.         shl     eax, 8
    203.         jmp     @@4
    204. @@2:
    205.         lodsb
    206.         shl     eax, 8
    207.         loop    @@3
    208.         jmp     @@4
    209. @@3:          
    210.         lodsb
    211.         dec     ecx
    212. @@4:          
    213.         push    ecx
    214.         push    4
    215.         pop     ecx
    216.         push    ecx
    217. @@:
    218.         rol     edx, 8
    219.         mov     dl, al
    220.         and     dl, 00111111B        
    221.         shr     eax, 6
    222.         loop    @B
    223.  
    224.         pop     ecx
    225.  
    226. @edx_conv:
    227.         cmp     dl, 62
    228.         jae     dl_62_63
    229.         cmp     dl, 51
    230.         ja      digit_0_9
    231.         add     dl, 'A'
    232.         cmp     dl, 'Z'
    233.         jbe     @F
    234.         add     dl, 'a'-'Z'-1
    235. @@:
    236.         jmp     rotate_edx
    237. digit_0_9:
    238.         add     dl, 30h-52
    239.         jmp     rotate_edx
    240. dl_62_63:
    241.         sub     dl, 62
    242.         shl     dl, 2
    243.         add     dl, 43
    244. rotate_edx:
    245.         rol     edx, 8
    246.         loop    @edx_conv
    247.  
    248.         xchg    eax, edx
    249.         stosd
    250.         xchg    eax, edx
    251.  
    252.         pop     ecx
    253.  
    254.         ; CRLF
    255.         inc     ebx
    256.         inc     ebx
    257.         cmp     ebx, 24h
    258.         jnz     @next
    259.         xor     ebx, ebx
    260.         mov     al, 0ah
    261.         stosb
    262. @next:
    263.         or      ecx, ecx
    264.         jnz     @gen
    265.  
    266.         ret
    267.  
    268.  
    269.  
    270. Base64_Pinch endp
    271.  
    272.  
    273.  
    274.  
    275. end start
     
  20. calidus

    calidus Member

    Публикаций:
    0
    Сделал свой второй вариант все работает супер))))))) ... там дата слать отдельно надобыло ..Закрываем тему