???????? 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
????????