POP3(Post Office Protocol 3) POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3.用于从POP3邮件服务器上下载邮件.这个协议很简单.命令只有12个.一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明文发送用户名和口令,在 认可状态等 待客户连接的情况下,客户发出连接,并由命令USER和PASS对在网络上发送明文用户名和 口令给服务器,为了避免发送明文口令的问题使用APOP,口令在传输之前被加密.但是目前大多数windows上的邮件客户软件不支持APOP命令.所以如果在进行ARP欺骗后就可以对内网使用POP3协议下载邮件的用户进行嗅探.所以在使用OutlookExpress等客户端登陆POP3服务器的时候就要小心有人嗅你的密码
.
编写嗅POP3的嗅探器并不难,在我的以前的贴子里的ARP欺骗的基础上加十几行代码就可以实现了
.可以供大家学习参考练习用,实际上的作用不是很强.
首先,分析POP3协议就知道POP3服务器开在110端口.我们就可以先判断包是否是TCP包,如果是的就查看连接的端口,是110就说明是在使用POP3协议进行会话.IP头的第10个字节(加上14个字节以太头,就是整个帧的第24个字节)为0x06就表示后面跟的是TCP包.使用POP3会话时IP头一般是20个字节长,所以一般不用去计算IP头的长度.默认20字节处理,这样效率会好点.
TCP头的第3,4两个字节(整个帧的第37.38字节)是目的端口号.判断是否是110.
然后,发现POP3协议的包后就分析POP3的命令,由于是嗅用户名与口令,所以我们就只需对USER和PASS两条命令进行判断,POP3命令采用命令行形式,用ASCII码表示.POP3命令由一个命令和一些参数组成,所有命令以一个CRLF对结束。命令和参数由可打印的ASCII字字符组成,它们之间由空格间隔。命令一般是三到四个字母,每个参数却可达40个字符长。不过用户名和口令基本上都在20个字节以内.命令是在TCP的数据部分的开头.所以通过计算TCP头的长度(一般也是20个字节),在加上34,就是POP3命令数据的起点了.
再判断命令是否为USER和PASS.判断的时候没必要将他们输入字符串进行比较,直接从数据起点取unsigned long形数据与0x55534552与0x50415353进行比较就行,更快.如果是USER或PASS就记录他们后面一个空格(0x20)后的字符串,直道CR停止
.
这样就记录了用户名与口令.当然你还要记录别人登陆服务器的IP,不然你也不知道去哪登录
.
本人菜鸟,不当之处请不吝指点.
saga.constantine
2006.05.11