知识大全 C#编程让Outlook乖乖交出帐户密码(1)

Posted 密码

篇首语:敢说敢作敢为, 无怨无恨无悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#编程让Outlook乖乖交出帐户密码(1)相关的知识,希望对你有一定的参考价值。

C#编程让Outlook乖乖交出帐户密码(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  许多人习惯于让Outlook记住密码 收邮件时便不必每次都输入邮箱密码 一切让Outlook代劳 但时间一长 马虎的人会把自己的邮箱密码忘记 这样就无法重新设置或者登录Web界面收取邮件了 Outlook绝对不会告诉你邮箱的密码是多少 即使你找到了注册表中Outlook存储帐户和密码信息的键值 由于密码信息都是加密存储的 你还是无法提取密码 我们的对策就是针对邮箱服务中安全机制最薄弱的环节采取行动……    众所周知 POP 协议本质上是一种明文协议 也就是说 虽然Outlook本地存储的密码是加密的 但当它连接到POP 服务器准备收取邮件时 必须以明文的形式提供密码 因此 只要我们开发一个POP 服务器(不必是功能完善的POP 服务器 只要骗过Outlook即可) 让Outlook从该服务器收取邮件 Outlook就会乖乖地交出加密得严严实实的密码 实际上 这种办法不仅适用于Outlook 而且适用于所有使用POP 的邮件客户程序 如Outlook Express Foxmail等      一 构造POP 服务器    下面我们要用VS NET 和C#开发一个 伪 POP 服务器——之所以说它 伪 那是因为它只有极其有限的功能 只进行到骗出邮箱密码就停止     启动VS NET 新建一个C#项目 项目的模板选择 控制台应用程序 将项目命名为PServer 点击 确定 创建项目 如图 所示      >    VS NET自动创建PServer名称空间 Class 类和Main函数骨架 在Class cs文件的顶端using System语句之后加入下列三个语句     using System Net;  using System Net Sockets;  using System Text;    接下来的任务就是修改Main函数 使它作为一个POP 服务器监听来自Outlook的请求 当Outlook尝试连接这个PServer服务器时 根据POP 协议的要求 我们确认一下Outlook用户提供的帐户名并要求提供密码 Outlook提供密码后 我们在控制台上输出密码 这样就算完成了任务!    在Main函数中 我们的第一个任务是启动一个POP 服务器 为此 我们要用System Net Sockets名称空间定义的类创建一个ipEndPoint 让一个TCP服务器监听该端点 接收来自客户端的请求     // 在 (本地机器)上创建一个TCP服务器 监听    // 端口的请求( 是POP 服务器的默认端口)    IPEndPoint ipEndPoint = new IPEndPoint(IPAddress Parse( ) );  TcpListener tcpServer = new TcpListener(ipEndPoint);  tcpServer Start();    // 等待来自POP 客户程序(如Outlook)的连接请求    TcpClient tcpClient = tcpServer AcceptTcpClient();    当一个POP 客户程序连接该服务器时 服务器必须按照POP 协议的要求对客户程序作出应答 根据POP 协议RFC 规范的定义 服务器首先要做的是返回一个欢迎信息     // 向客户程序返回欢迎信息    NeorkStream ns = tcpClient GetStream();  byte[] outbytes = Encoding ASCII GetBytes( +OK Wele + Environment NewLine);  ns Write(outbytes outbytes Length);    客户程序接收到欢迎信息后 同样也会按照POP 协议的要求发送帐户名称 我们把这个帐户名称记录下来以便以后使用 代码如下     // 接收和记录邮箱帐户名称    byte[] userBytes = new byte[ ];  ns Read(userBytes userBytes Length);    收到帐户名称信息后 我们要告诉Outlook说这个名称没有问题 客户程序一收到这个信息就会发送密码 然后我们再把密码也记录下来 实现代码是     // 告诉客户程序帐户名称正确    outbytes = Encoding ASCII GetBytes( +OK + Environment NewLine);  ns Write(outbytes outbytes Length);    // 接收和记录帐户密码    byte[] pwdBytes = new byte[ ];  ns Read(pwdBytes pwdBytes Length);    接下来要做的就是获取字节数组的内容 将它们转换成字符串 然后输出到控制台     // 在控制台上显示出帐户名称 密码    Console WriteLine( 帐户名称 + Encoding ASCII GetString(userBytes));  Console WriteLine( 帐户密码 + Encoding ASCII GetString(pwdBytes));    既然已经获得了密码 服务器的任务已经完成了 现在可以关闭它 强行关闭服务器会导致客户程序显示错误信息 不过这里我们并不在乎 关闭服务器的代码是     // 关闭服务器    ns Close();  tcpClient Close();  tcpServer Stop();    将上面的所有代码依次输入Main函数 编译一下就得到了一个PServer exe执行文件 它就是我们的伪POP 服务器 PServer exe体积很小 发行版只有 KB cha138/Article/program/net/201311/12002

相关参考

知识大全 C#编程 忘记密码功能的实现方法

C#编程忘记密码功能的实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文将给出通过C#

知识大全 用C#对Illustrator矢量图形软件进行编程[1]

用C#对Illustrator矢量图形软件进行编程[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

张某下班途中被一歹徒尾随,歹徒将其皮包抢去后,持刀逼住张某的喉部要其交出银行卡密码,张某不从,歹徒持刀便刺,张某情急中夺

张某下班途中被一歹徒尾随,歹徒将其皮包抢去后,持刀逼住张某的喉部要其交出银行卡密码,张某不从,歹徒持刀便刺,张某情急中夺过匕首,将歹徒刺伤。关于本案的处理,正确的是_____。A、张某构成伤害罪B、张

知识大全 用手机号注册淘宝时显示己注册,为什么找回密码时却又显示该帐户不存在?

用手机号注册淘宝时显示己注册,为什么找回密码时却又显示该帐户不存在?我曾经注册邮箱的时候也是出现过这种情况,你可以试试用别人的手机或是在电脑上试下,如果还是这种情况,那就是淘宝伺服器的问题,可以让别的

知识大全 C#编程中的 New 关键词的几种用法[1]

C#编程中的New关键词的几种用法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前段时间

知识大全 C# 编程规范

C#编程规范  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一命名  用pascal规则来命名方

知识大全 Visual C#实现DB2数据库的编程例子[1]

VisualC#实现DB2数据库的编程例子[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Visual C#中实现DB2数据库的编程实例[1]

VisualC#中实现DB2数据库的编程实例[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 C#编程三步走之一

C#编程三步走之一  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#是微软NET架构的主力开发

知识大全 C#编程实现动态生成Word文档

C#编程实现动态生成Word文档  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何用C#编程实