<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3707442</guid>
        <pubDate>Fri, 17 Feb 2017 07:00:31 +0000</pubDate>
        <title>Отправка e-mail&amp;#39;а с вложением</title>
        <link>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3707442</link>
        <description><![CDATA[Jin X: Пример нерабочий, ссылка битая... Если кто исправит, верну обратно в Assembler FAQ...]]></description>
        <author>Jin X</author>
        <category>Все языки: Статьи, заготовки в FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401590</guid>
        <pubDate>Tue, 21 Jan 2014 10:06:14 +0000</pubDate>
        <title>Отправка e-mail&amp;#39;а с вложением</title>
        <link>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401590</link>
        <description><![CDATA[Absolute_30h: Спасибо за ответ, в теме не в зуб ногой, постараюсь нарыть инфу по вновь открывшимся обстоятельствам через поисковики.]]></description>
        <author>Absolute_30h</author>
        <category>Все языки: Статьи, заготовки в FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401577</guid>
        <pubDate>Tue, 21 Jan 2014 09:47:08 +0000</pubDate>
        <title>Отправка e-mail&amp;#39;а с вложением</title>
        <link>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401577</link>
        <description><![CDATA[Ct757: Да уж, много времени прошло :D Пример не очень актуален, да и кривовато написан. Протокол конечно никто не менял, но во-первых IP нужно получать динамически через gethostbyname (видимо автору лень было этим заниматься), плюс на всех серверах сейчас требуется авторизация (SMTP AUTH). Вот более свежий пример, хотя ему тоже уже много лет <a class='tag-url' href='http://nepanda.net/wasm/article.php-article=simplesmtp.htm' target='_blank'>http://nepanda.net/wasm/article.php-article=simplesmtp.htm</a>. А вообще по данной теме лучше искать инфу тут - wasm.ru/forum/]]></description>
        <author>Ct757</author>
        <category>Все языки: Статьи, заготовки в FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401571</guid>
        <pubDate>Tue, 21 Jan 2014 09:36:11 +0000</pubDate>
        <title>Отправка e-mail&amp;#39;а с вложением</title>
        <link>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=3401571</link>
        <description><![CDATA[Absolute_30h: Скомпилировал код, запустил. Программа закончилась не успев начаться, стал идти по проверкам Errorов, получилось что закругляется после попытки законектиться. <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">invoke &nbsp; connect,[sock],sin,10h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Коннектимся к серверу</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> SOCKET_ERROR полез по интернетам, ничего не понял, тема для меня новая, наткнулся сегодня случайно. Поскольку со дня создания оного кода минуло без малого девять лет не знаю что и предполагать. Вариантов (по незнанию) в голове куча, начиная от того что айпи на сервере уже не тот и заканчивая тем что и протокол быть может поменяль. Сомнения подогрели тёрки на одном из форумов о борьбе майловцев со спамерами и т.п. Вобщем за что хвататься не знаю. Если не затруднит дать пару дельных советов буду благодарен.]]></description>
        <author>Absolute_30h</author>
        <category>Все языки: Статьи, заготовки в FAQ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=791472</guid>
        <pubDate>Sun, 31 Jul 2005 16:51:49 +0000</pubDate>
        <title>Отправка e-mail&amp;#39;а с вложением</title>
        <link>https://forum.sources.ru/index.php?showtopic=103983&amp;view=findpost&amp;p=791472</link>
        <description><![CDATA[Ct757:  <br>
<div class='tag-align-center'><span class='tag-size' data-value='13' style='font-size:13pt;'><span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Отправка e-mail&#39;а с вложением</strong></span></span></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</div><div class="code_line">; Sending mail with attach in FASM</div><div class="code_line">; &nbsp; &nbsp; &nbsp; &nbsp; Created by Ct757</div><div class="code_line">; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</div><div class="code_line">;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; Здесь я хочу показать, как можно отправить письмо с вложением</div><div class="code_line">; напрямую через SMTP-сервер (в данном случае smtp.mail.ru)</div><div class="code_line">; В принципе, команды те же, что и при посылке обычного письма,</div><div class="code_line">; разница только в том, что аттач нужно закодировать по алгоритму</div><div class="code_line">; base64, а так же указать некоторые дополнительные пункты в заголовке письма</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">&nbsp;</div><div class="code_line">format PE GUI 4.0</div><div class="code_line">entry start</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;include &#39;%fasminc%\win32a.inc&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.code&#39; code readable writeable executable</div><div class="code_line">&nbsp;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; Я не буду в подробностях объяснять SMTP-команды, если вы их не знаете смотрите RFC</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;smtp_server &nbsp;db &#39;194.67.23.111&#39;,0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; IP-адрес smtp.mail.ru</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;helo_0 &nbsp; &nbsp; &nbsp; db &#39;HELO 0&#39;,13,10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Команда helo</div><div class="code_line">&nbsp;&nbsp;helo_0_sz &nbsp; &nbsp;= $ - helo_0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;mail_fr &nbsp; &nbsp; &nbsp;db &#39;MAIL FROM: 111@mail.ru&#39;,13,10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; От кого письмо</div><div class="code_line">&nbsp;&nbsp;mail_fr_sz &nbsp; = $ - mail_fr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;rcpt_to &nbsp; &nbsp; &nbsp;db &#39;RCPT TO: test3456@mail.ru&#39;,13,10 &nbsp; &nbsp; &nbsp; &nbsp; ; Кому отправлять</div><div class="code_line">&nbsp;&nbsp;rcpt_to_sz &nbsp; = $ - rcpt_to &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;data_ &nbsp; &nbsp; &nbsp; &nbsp;db &#39;DATA&#39;,13,10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Команда data</div><div class="code_line">&nbsp;&nbsp;data_sz &nbsp; &nbsp; &nbsp;= $ - data_ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; Заголовок и текст письма</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;message &nbsp; &nbsp; &nbsp;db &#39;From: Bill Gates &#60;111@mail.ru&#62;&#39;,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; От кого</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Subject: Test MESSAGE&#39;,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Тема</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;To: TEST &#60;test3456@mail.ru&#62;&#39;,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Кому</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;MIME-Version: 1.0&#39;,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Версия MIME</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Type: multipart/mixed;&#39;,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Тип содержимого</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39; boundary=&quot;--ct757&quot;&#39;,13,10,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Разделитель</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;----ct757&#39;,13,10,\</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Type: text/plain; charset=Windows-1251&#39;,13,10,\ &nbsp; &nbsp; &nbsp;; Содержимое: текст,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Transfer-Encoding: 8bit&#39;,13,10,13,10,\ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; кодировка Win-1251</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Hello, this is the test message with attachment.&#39;,13,10,13,10,\ &nbsp;; Текст письма</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;----ct757&#39;,13,10,\</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Type: application/octet-stream; name=&quot;test.rar&quot;&#39;,13,10,\ ; Содержимое: вложение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Disposition: attachment; filename=&quot;test.rar&quot;&#39;,13,10,\ &nbsp; &nbsp;; имя файла - test.rar</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Content-Transfer-Encoding: base64&#39;,13,10,13,10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Поясняем, что закодировано</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; с помощью base64</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;message_sz &nbsp; = $ - message &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Размер письма вместе с</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; заголовком (без вложения!)</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;file_name &nbsp; &nbsp;db &#39;D:\test.rar&#39;,0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Файл, который нужно отправить</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sock &nbsp; &nbsp; &nbsp; &nbsp; dd 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Дескриптор сокета</div><div class="code_line">&nbsp;&nbsp;file_h &nbsp; &nbsp; &nbsp; dd 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Дескриптор файла</div><div class="code_line">&nbsp;&nbsp;map_h &nbsp; &nbsp; &nbsp; &nbsp;dd 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Дескриптор мэппинга</div><div class="code_line">&nbsp;&nbsp;map_addr &nbsp; &nbsp; dd 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Адрес мэппинга</div><div class="code_line">&nbsp;&nbsp;al_mem &nbsp; &nbsp; &nbsp; dd 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Адрес памяти в куче</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;buf_sz &nbsp; &nbsp; &nbsp; = 100h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Размер буффера</div><div class="code_line">&nbsp;&nbsp;buf &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rb buf_sz &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Буффер для recv</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;WSA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WSADATA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Необходимые</div><div class="code_line">&nbsp;&nbsp;sin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sockaddr_in &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; структуры</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; base64 encoder without dictionary by RT Fishel</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">;</div><div class="code_line">; ebp = length, esi -&#62; src buffer, edi -&#62; dst buffer</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;b64:</div><div class="code_line">&nbsp;&nbsp; &nbsp;.newline:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; b64.store_crlf</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.encode:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;push &nbsp; &nbsp; (76 shr 2)+1</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;pop &nbsp; &nbsp; &nbsp;edx</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.outer:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec &nbsp; &nbsp; &nbsp;edx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; b64.newline</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;lodsd</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec &nbsp; &nbsp; &nbsp;esi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;ebp</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;bswap &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ecx,4</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.inner:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rol &nbsp; &nbsp; &nbsp;eax,6</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;and &nbsp; &nbsp; &nbsp;al,3Fh</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;al,3Eh</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jb &nbsp; &nbsp; &nbsp; b64.testchar</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;shl &nbsp; &nbsp; &nbsp;al,2</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sub &nbsp; &nbsp; &nbsp;al,((3Eh shl 2)+&#39;A&#39;-&#39;+&#39;) and 0FFh</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.testchar:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sub &nbsp; &nbsp; &nbsp;al,4</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;al,&#39;0&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jnl &nbsp; &nbsp; &nbsp;b64.store</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;add &nbsp; &nbsp; &nbsp;al,&#39;A&#39;+4</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;al,&#39;Z&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jbe &nbsp; &nbsp; &nbsp;b64.store</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;add &nbsp; &nbsp; &nbsp;al,&#39;a&#39;-&#39;Z&#39;-1</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.store:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosb</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec &nbsp; &nbsp; &nbsp;ebp</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;loopne &nbsp; b64.inner</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;b64.outer</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;al,&#39;=&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rep &nbsp; &nbsp; &nbsp;stosb</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ret</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;.store_crlf:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ax,0A0Dh</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosw</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ret</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; Процедура чтения в буффер из сокета</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;read_buf:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; recv,[sock],buf,buf_sz,esi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ret</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">; Начало основной программы</div><div class="code_line">; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;start:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;xor &nbsp; &nbsp; &nbsp;esi,esi</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; CreateFile,file_name,GENERIC_WRITE or GENERIC_READ,\ &nbsp; &nbsp; ; Откроем нужный</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; esi,esi,OPEN_EXISTING,esi,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; нам файл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим в</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; exit &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; случае ошибки</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Если всё ок,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[file_h],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; сохраним его хэндл</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; GetFileSize,eax,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Узнаем размер файла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ebx,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Сохраним его в ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rol &nbsp; &nbsp; &nbsp;eax,1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Умножим размер на два</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; (на всякий случай, т.к.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; размер закодированного</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; в base64 файла всегда больше)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;add &nbsp; &nbsp; &nbsp;eax,message_sz &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Прибавим к получившемуся</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; результату размер уже</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; имеющегося письма</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; LocalAlloc,LMEM_FIXED,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выделим место в куче</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;test &nbsp; &nbsp; eax,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Если ошибка -</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; exit &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; выходим, иначе</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[al_mem],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; сохраним адрес</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;edi,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Переместим в кучу</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;esi,message &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; подготовленный</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ecx,message_sz &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; заголовок и текст</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rep &nbsp; &nbsp; &nbsp;movsb &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; письма</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;xor &nbsp; &nbsp; &nbsp;esi,esi</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; CreateFileMapping,[file_h],esi,PAGE_READWRITE,esi,ebx,esi &nbsp; &nbsp;; Создадим file mapping</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;test &nbsp; &nbsp; eax,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим в</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; clean_exit3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; случае ошибки</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[map_h],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Если всё ok, сохраним хэндл</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; MapViewOfFile,eax,2,esi,esi,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Спроецируем файл в память</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;test &nbsp; &nbsp; eax,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим в</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; clean_exit2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; случае ошибки</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[map_addr],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Если всё ok,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; сохраним адрес мэппинга</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;esi,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Укажем, откуда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; брать данные</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ebp,ebx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Укажем размер данных</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; b64.encode &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Кодируем в base64</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ax,0A0Dh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Добавим к</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosw &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; получившемуся</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ax,0A0Dh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; письму</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosw &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; CRLF</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;al,&#39;.&#39; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; .</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosb &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; CRLF</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ax,0A0Dh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;stosw &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;eax,edi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Вычислим размер</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sub &nbsp; &nbsp; &nbsp;eax,[al_mem] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; получившегося письма,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;ebx,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; и сохраним его в ebx</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;xor &nbsp; &nbsp; &nbsp;esi,esi</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; WSAStartup,101h,WSA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Инициализируем winsock</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;test &nbsp; &nbsp; eax,eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим в</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;clean_exit1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; случае ошибки</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; socket,AF_INET,SOCK_STREAM,0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Создаем сокет</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; clean_exit &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; если</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dec &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; ошибка</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[sock],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Если ok - сохраним</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; его дескриптор</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;push &nbsp; &nbsp; smtp_server &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Преобразуем адрес</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; [inet_addr] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; сервера</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[sin.sin_family],AF_INET &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Заполним структуру</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[sin.sin_port],1900h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; sockaddr_in</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp; &nbsp;[sin.sin_addr],eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; connect,[sock],sin,10h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Коннектимся к серверу</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Если ошибка</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; выходим</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Получим и</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; проверим</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; ответ сервера</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;dword [buf],&#39;220 &#39; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;shtdown &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; send,[sock],helo_0,helo_0_sz,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Пошлем приветствие</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выход,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; если ошибка</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Проверим ответ сервера</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;dword [buf],&#39;250 &#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; send,[sock],mail_fr,mail_fr_sz,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; MAIL FROM</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;dword [buf],&#39;250 &#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; send,[sock],rcpt_to,rcpt_to_sz,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; RCPT TO</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;dword [buf],&#39;250 &#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; send,[sock],data_,data_sz,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; DATA</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cmp &nbsp; &nbsp; &nbsp;dword [buf],&#39;354 &#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;jne &nbsp; &nbsp; &nbsp;shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; send,[sock],[al_mem],ebx,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Посылаем письмо</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc &nbsp; &nbsp; &nbsp;eax</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;je &nbsp; &nbsp; &nbsp; shtdown</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;call &nbsp; &nbsp; read_buf</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;shtdown:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; shutdown,[sock],esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Разрываем соединение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; closesocket,[sock] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; и закрываем сокет</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;clean_exit:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; WSACleanup</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;clean_exit1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; UnmapViewOfFile,[map_addr] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Выгрузим файл из памяти</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;clean_exit2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; CloseHandle,[map_h] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Закроем хэндл мэппинга</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;clean_exit3:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; LocalFree,[al_mem] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Освободим память в куче</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; CloseHandle,[file_h] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Закроем файл</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;exit:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;invoke &nbsp; ExitProcess,esi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Выходим из программы</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">data import &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Import table</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;library kernel32,&#39;KERNEL32.DLL&#39;,\</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;wsock32,&#39;WSOCK32.DLL&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;include &#39;%fasminc%\APIA\kernel32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%fasminc%\APIA\wsock32.inc&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">end data</div></ol></div></div></div></div>]]></description>
        <author>Ct757</author>
        <category>Все языки: Статьи, заготовки в FAQ</category>
      </item>
	
      </channel>
      </rss>
	