用汇编语言写ESMTP邮件发送程序.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用汇编语言写ESMTP邮件发送程序

用汇编语言写ESMTP邮件发送程序 最近在CSDN论坛上看到许多人问着同一个问题——如何编写带服务器验证的 ESMTP 邮件发送程序,回答的人还真不少:有建议用 MAPI 的、有建议使用别人的类库的……其实我对此是颇不以为然的。ESMTP 的编写并不困难,关键是弄清楚了协议——只要严格按照协议来进行,就一定能OK,反而编程的技巧在此倒是无足轻重的。换句话说,写这个程序是Easy job,没有必要用到 MAPI 等“庞然大物”啊。 既然如此,让我们来使用 Win32ASM 编写一个自己的 ESMTP “引擎”,可以用在你的病毒或者木马上哦!??:) 我们先来看看 SMTP 的发送协议,在 rfc821(smtp) 和 rfc1521(mime) 里面写得非常清楚,读者请自行参考这两个文档。什么?看不懂英文?……没关系,我给大家整理一下。ESMTP 的整个发送过程如下: Socket连接后,按 ESMTP 协议通讯(注意每条命令结尾符“回车\换行\.\回车\换行”结束): 1、EHLO Domain\r\n ????????这条命令可以不要,但是按照标准的写法,还是加上好。 ????????Example: EHLO \r\n 2、AUTH LOGIN\r\n ????????告诉服务器,要进行验证了。 3、Base64_Username\r\n ????????发送经过 Base64 编码的用户名给服务器。 4、Base64_Password\r\n ????????发送经过 Base64 编码的密码给服务器。 5、MAIL FROM:\r\n ????????发送者的Email地址。 ????????Example: MAIL FROM: lcother@163.net\r\n 6、RCPT TO:\r\n ????????目标Email地址。 ????????Example: RCPT TO: target@163.net\r\n 7、DATA\r\n ????????开始传送数据。 8、发送数据\r\n.\r\n ????????注意:SMTP协议只发送信息,至于如何区分CC、BCC、Subject、Body等不属于SMTP的范围,详情请查看RFC文档MAIL格式部分 ????????简单说一下MAIL格式:Sunject:主题\r\n\r\n内容,还有好多…… ????????返回值为“250 ***”表示正常,同时***里含有MessageID等信息(前面的命令都有相应的返回信息) 9、QUIT\r\n ????????Over,走人…… 上面的是 ESMTP 的协议,如果我们严格按照上面的协议,就可以写出 ESMTP 的发送程序了。大家看出来了吗?其实 ESMTP 与 SMTP 唯一不同的地方,就是在于第三步和第四步——缺少了这两个步骤, ESMTP 就等于 SMTP 了。 至于如何区分正文和附件,其实是在 DATA\r\n 后,通过一个叫做“Boundary”的分隔字符串来分隔开来的,这个“Boundary”可以是任意的字符串,随你喜欢怎么取都行,但是必须注意的是,分隔的时候要按照“--Boundary”的格式,结束的时候要用“--Boundary--”。而附件的内容,是通过 Base64 编码,包含在 DATA 里面进行发送;如果有多个附件,就要进行循环,把每个附件的内容包含进去,直至结束。 这样说会不会太抽象了?好吧,我举个例子: EHLO , 13, 10 AUTH LOGIN, 13, 10 lcother, 13, 10 lcother_password, 13, 10 MAIL FROM:lcother@163.net, 13, 10 RCPT TO:target@163.net, 13, 10 DATA, 13, 10 From: 老罗, 13, 10,\ To: Somebody, 13, 10, \ Subject: 你好吗?, 13, 10, 0 MIME-Version: 1.0, 13, 10, \ X-Mailer: LCMailer by LC, 13, 10, \ Content-type:multipart/mixed;Boundary=www.LuoC, 13, 10, 13, 10, \ --www.LuoC, 13, 10, \ Content-type:text/plain;Charset=GB2312, 13, 10, \ Content-Transfer-Encoding:8bit, 13, 10, 13, 10, \ 好久不见,最近过得好吗?(正文内容), 13, 10, 13, 10, 0, \ .if (有附件) ????--, 13, 10, \

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档