六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

C#編程讓Outlook乖乖交出帳戶密碼

[摘要]許多人習慣于讓Outlook記住密碼,收郵件時便不必每次都輸入郵箱密碼,一切讓Outlook代勞。但時間一長,馬虎的人會把自己的郵箱密碼忘記,這樣就無法重新設置或者登錄Web界面收取郵件了。Outlook絕對不會告訴你郵箱的密碼是多少,即使你找到了注冊表中Outlook存儲帳戶和密碼信息的鍵值,由...
許多人習慣于讓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所示:

C#編程讓Outlook乖乖交出帳戶密碼

圖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。


[1] [2] [3]  下一頁




主站蜘蛛池模板: 日本在线视频免费观看 | 午夜在线观看免费影院 | 日本性欧美 | 一二三四视频日本高清 | 亚洲日韩精品欧美一区二区一 | 午夜欧美视频 | 五月天婷婷在线视频 | 桃花岛在线播放免费观看 | 色偷偷亚洲第一成人综合网址 | 欧美视频一二三区 | 热综合一本伊人久久精品 | 欧美怡红院免费的全部视频 | 亚洲欧美综合网站 | 午夜不卡影院 | 青青草原网站在线观看 | 最近免费观看高清韩国日本大全 | 亚洲精品国产综合久久一线 | 日韩在线观看免费 | 午夜涩涩| 天天色踪合 | 日本不卡在线一区二区三区视频 | 在线观看国产一区亚洲bd | 亚洲精品视频在线观看你懂的 | 亚洲天堂在线观看完整版 | 日韩欧美精品在线 | 中文字幕亚洲一区 | 无码精品日韩中文字幕 | 欧美特黄一免在线观看 | 色成人综合| 日韩高清第一页 | 四虎成人免费网站在线 | 中国二级毛片 | 日韩欧美中文字幕在线视频 | 一级一级一级毛片免费毛片 | 在线亚州| 伊人中文字幕在线 | 日韩欧美在线播放 | 五月婷婷六月丁香 | 天天天夜夜夜 | 亚洲入口 | 一区二区三区在线观看视频 |