注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > C#.NET 内容正文:C#编程让Outlook乖乖交出帐户密码

C#编程让Outlook乖乖交出帐户密码

发布时间:2006-05-13 13:20:08 来源:电脑爱好者 网友评论 0 条

    许多人习惯于让Outlook记住密码,收邮件时便不必每次都输入邮箱密码,一切让Outlook代劳。但时间一长,马虎的人会把自己的邮箱密码忘记,这样就无法重新设置或者登录Web界面收取邮件了。Outlook绝对不会告诉你邮箱的密码是多少,即使你找到了注册表中Outlook存储帐户和密码信息的键值,由于密码信息都是加密存储的,你还是无法提取密码。我们的对策就是针对邮箱服务中安全机制最薄弱的环节采取行动……

    众所周知,POP3协议本质上是一种明文协议,也就是说,虽然Outlook本地存储的密码是加密的,但当它连接到POP3服务器准备收取邮件时,必须以明文的形式提供密码。因此,只要我们开发一个POP3服务器(不必是功能完善的POP3服务器,只要骗过Outlook即可),让Outlook从该服务器收取邮件,Outlook就会乖乖地交出加密得严严实实的密码。实际上,这种办法不仅适用于Outlook,而且适用于所有使用POP3的邮件客户程序,如Outlook Express、Foxmail等。

一、构造POP3服务器

    下面我们要用VS.NET 2003和C#开发一个“伪”POP3服务器——之所以说它“伪”,那是因为它只有极其有限的功能,只进行到骗出邮箱密码就停止。

    启动VS.NET 2003,新建一个C#项目,项目的模板选择“控制台应用程序”,将项目命名为PServer,点击“确定”创建项目,如图1所示:

图1 新建C#项目

    VS.NET自动创建PServer名称空间、 Class1类和Main函数骨架。在Class1.cs文件的顶端using System语句之后加入下列三个语句:

using System.Net;
using System.Net.Sockets;
using System.Text;

    接下来的任务就是修改Main函数,使它作为一个POP3服务器监听来自Outlook的请求,当Outlook尝试连接这个PServer服务器时,根据POP3协议的要求,我们确认一下Outlook用户提供的帐户名并要求提供密码,Outlook提供密码后,我们在控制台上输出密码,这样就算完成了任务!

    在Main函数中,我们的第一个任务是启动一个POP3服务器。为此,我们要用System.Net.Sockets名称空间定义的类创建一个ipEndPoint,让一个TCP服务器监听该端点,接收来自客户端的请求:

// 在127.0.0.1(本地机器)上创建一个TCP服务器,监听
// 110端口的请求(110是POP3服务器的默认端口)
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),110);
TcpListener tcpServer = new TcpListener(ipEndPoint);
tcpServer.Start();
// 等待来自POP3客户程序(如Outlook)的连接请求
TcpClient tcpClient = tcpServer.AcceptTcpClient();

    当一个POP3客户程序连接该服务器时,服务器必须按照POP3协议的要求对客户程序作出应答。根据POP3协议RFC 1939规范的定义,服务器首先要做的是返回一个欢迎信息:

// 向客户程序返回欢迎信息
NetworkStream ns = tcpClient.GetStream();
byte[] outbytes = Encoding.ASCII.GetBytes("+OK Welcome" + Environment.NewLine);
ns.Write(outbytes,0,outbytes.Length);

    客户程序接收到欢迎信息后,同样也会按照POP3协议的要求发送帐户名称。我们把这个帐户名称记录下来以便以后使用,代码如下:

// 接收和记录邮箱帐户名称
byte[] userBytes = new byte[255];
ns.Read(userBytes,0,userBytes.Length);

    收到帐户名称信息后,我们要告诉Outlook说这个名称没有问题,客户程序一收到这个信息就会发送密码,然后我们再把密码也记录下来。实现代码是:

// 告诉客户程序帐户名称正确
outbytes = Encoding.ASCII.GetBytes("+OK" + Environment.NewLine);
ns.Write(outbytes,0,outbytes.Length);
// 接收和记录帐户密码
byte[] pwdBytes = new byte[255];
ns.Read(pwdBytes,0,pwdBytes.Length);

    接下来要做的就是获取字节数组的内容,将它们转换成字符串,然后输出到控制台:

// 在控制台上显示出帐户名称、密码
Console.WriteLine("帐户名称:" + Encoding.ASCII.GetString(userBytes));
Console.WriteLine("帐户密码:" + Encoding.ASCII.GetString(pwdBytes));

    既然已经获得了密码,服务器的任务已经完成了,现在可以关闭它。强行关闭服务器会导致客户程序显示错误信息,不过这里我们并不在乎。关闭服务器的代码是:

// 关闭服务器
ns.Close();
tcpClient.Close();
tcpServer.Stop();

    将上面的所有代码依次输入Main函数,编译一下就得到了一个PServer.exe执行文件,它就是我们的伪POP3服务器。PServer.exe体积很小,发行版只有16 KB。

相关文章
  • 深入理解C#编程中的组件-事件-委托
  • C#编程实现Excel文档中搜索文本
  • Visual C#编程入门之C#的程序结构
  • Visual C#编程入门之Hello World
  • 关闭Outlookr的自动完成功能
【评论】【收藏本文】【打印】【关闭】
上一篇文章:用Visual C#打造多页面网页浏览器
下一篇文章:在C#程序设计中使用Win32类库
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
推荐阅讯
  • C#中利用mediaplayer打造mp3播放器
  • 在C#中动态调用native dll的导出函数
  • C#箴言:定义常量的两种方法
  • 深入理解C#编程中的组件-事件-委托
  • 用C#创建PDA应用程序的柱形图控件
  • Visual C#实现HTTP代理服务程序
  • 利用Visual C#实现Windows管道技术
  • Visual C#中编写多线程程序之起步
  • C# 3.0中新匿名类型特性初体验
  • 用Visual C#打造多页面网页浏览器
阅读排行
  • 1.Visual C#组件技巧之深入ComboBox美容
  • 2.用C#实现HTTP协议下的多线程文件传输
  • 3.《C语言程序设计》教学的几点体会
  • 4.对C#中的TreeView添加背景图
  • 5.使用C#开发SmartPhone程序入门
  • 6.Visual C#中编写多线程程序之起步
  • 7.Visual C#实现HTTP代理服务程序
  • 8.用Visual C#打造多页面网页浏览器
  • 9.深入理解C#编程中的组件-事件-委托
  • 10.利用C#实现标注式消息提示窗口
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载