VC++分析数据包实现POP3协议分析


POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
 POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。
  POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC机或 MAC。一旦邮件发送到 PC 机或 MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。


POP3协议的特性


  POP3协议默认端口:110
  POP3协议默认传输协议:TCP
  POP3协议适用的构架结构:C/S
  POP3协议的访问模式:离线访问


命令及工作原理简介


1.适用范围
  POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。  POP3脱机模型即不能在线操作,POP不支持对服务器邮件进行扩展操作,此过程需要更高级的IMAP4协议来完成。支持POP协议使用ASCII码来传输数据消息,这些数据消息可以是指令,也可以是应答。
2.POP协议
  协议支持离线邮件处理,当邮件发送到服务器后,电子邮件客户端会调用邮件客户端程序,下载所有未阅读的电子邮件(这种离线访问模式是一种存储转发服务).当邮件从邮件服务器发送到个人计算机上,同时邮件服务器会删除该邮件(但是目前很多POP3服务器都支持“下载邮件,服务器并不删除邮件”,也就是说在POP3中改进了POP协议).
3.命令和响应
  POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成或多个命令行组成,响应第一行以ASCII文本+OK或-ERR(OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。
4.三种状态
  认证状态,处理状态和更新状态。当客户机与服务器建立连接时,客户机向服务器发送自己身份(这里指的是账户和密码)并由服务器成功确认,即客户端由认可状态转入处理状态,在完成列出未读邮件等相应的操作后客户端发出quit命令,退出处理状态进入更新状态,开始下载未阅读过的邮件到计算机本地之后最后重返认证状态确认身份后断开与服务器的连接。具体原理如下图
  等待连接身份确认quit命令
  C——|认证|—————|处理|——————|更新|----S
  |__________________________________|
  重返认证状态。
5.认证状态的命令语句
  目前大多数POP客户端和服务端都是采用ASCII码来明文发送用户名和密码,在认证状态下服务端等待客户端连接时,客户端发出连接请求,并把由命令构成的user/pass用户身份信息数据明文发送给服务端。
  服务端确认客户端身份以后,连接状态由认证状态转入处理状态,为了避免发送明文口令的安全问题,有一种新的更为安全的认证方法,命名为APOP,使用APOP,口令在传输之前就被加密,当客户端与服务端第一次建立连接时,POP3服务器向客户端发送一个ASCII码文本的问候,这个问候是由遗传字符组成对每个客户机是唯一的,内容一般都是当地时间之类的。然后客户端把它的纯文本口令附加到刚才接受的字符串之后,接着计算出新的字符串的MD5单出函数值的消息数据,最后客户机把用户名和MD5加密后的消息摘要作为APOP命令的参数一起发送到服务器。但是目前大多数windows上的邮件客户端不支持APOP协议。qpopper支持。
6.POP3命令码
  命令参数状态描述  POP3 示意图------------------------------------------
  USERusername认可此命令与下面的pass命令若成功,将导致状态转换
  PASSpassword认可
  APOPName,Digest认可Digest是MD5消息摘要
  ------------------------------------------
  STATNone处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
  UIDL[Msg#]处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
  LIST[Msg#]处理返回邮件数量和每个邮件的大小
  RETR[Msg#]处理返回由参数标识的邮件的全部文本
  DELE[Msg#]处理服务器将由参数标识的邮件标记为删除,由quit命令执行
  RSETNone处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令
  TOP[Msg#]处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数
  NOOPNone处理服务器返回一个肯定的响应
  ------------------------------------------
  QUITNone更新
  a.客户机希望结束这次会话
  b.如果服务器处于‘处理’状态,那么将进入‘更新’状态以删除任何标记为删除的邮件
  c.导致由处理状态到更新状态,又重返认可状态的转变
  d.如果这个命令发出时服务器处于‘认可’状态,则结束会话,不进行‘更新’状态。
7.等待
  POP3协议在TCP/110端口上等待客户连接请求。[1]
8.监听
  若密码为明文,我如何监听?  POP3下面的命令在服务器运行后在屏幕上显示POP3连接及命令发送的过程:
  #sniffit-a-A.-p110-b-s192.169.11.12
  note:192.168.11.12是客户机IP地址
  你需要事先安装sniffit这个端口监听程序
9.中断
  考虑这种情况

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Winpcap是一个Windows平台上的网络数据包捕获库,它可以用来实现网络数据包分析和嗅探。要实现Winpcap的数据包协议分析,你可以按照以下步骤进行: 1. 安装Winpcap:首先,你需要下载并安装Winpcap库。你可以从Winpcap官网或其他可靠的来源获取安装程序。 2. 编写代码:使用支持Winpcap库的编程语言(如C++),你可以编写代码来实现数据包协议分析。以下是一个简单的示例代码,用于捕获和分析数据包: ```cpp #include <pcap.h> #include <stdio.h> void packet_handler(u_char* user_data, const struct pcap_pkthdr* pkthdr, const u_char* packet_data) { // 在这里进行数据包分析的操作 printf("Packet captured\n"); } int main() { char errbuf[PCAP_ERRBUF_SIZE]; pcap_t* handle; // 打开网络接口 handle = pcap_open_live("eth0", BUFSIZ, 1, 1000, errbuf); if (handle == NULL) { fprintf(stderr, "Could not open device: %s\n", errbuf); return 1; } // 开始捕获数据包 pcap_loop(handle, 0, packet_handler, NULL); // 关闭网络接口 pcap_close(handle); return 0; } ``` 此示例代码使用pcap_open_live函数打开名为"eth0"的网络接口,并使用pcap_loop函数捕获数据包。在packet_handler回调函数中,你可以对捕获到的数据包进行协议分析操作。 3. 编译和运行:将编写的代码保存为.cpp文件,并使用相应的编译器进行编译。确保在编译时链接Winpcap库文件。 以上是一个基本的实现Winpcap数据包协议分析的示例。你可以根据具体的需求和协议规范来进行更详细的分析和处理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值