《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于Winpcap的郵件還原系統的實現
基于Winpcap的郵件還原系統的實現
來源:微型機與應用2011年第2期
吳志強,馬春波,敖發良
(桂林電子科技大學 信息與通信學院,廣西 桂林541004)
摘要: 隨著互聯網的普及,SMTP/POP3協議傳輸方式下的郵件已成為最簡便、最經濟的通信方式,但許多有害的郵件信息也隨之而來。針對這些問題,在VC開發環境下,研究并實現了基于Winpcap的郵件監控及還原系統。該系統設計了多線程模塊,可以同時處理50個郵件及附件信息,并對網絡數據包的捕獲、過濾與重組、信頭解碼、附件處理、信體內容提取等模塊進行了算法優化。功能測試和驗證結果表明,該系統穩定、可擴展,達到實時性要求。
Abstract:
Key words :

摘  要: 隨著互聯網的普及,SMTP/POP3協議傳輸方式下的郵件已成為最簡便、最經濟的通信方式,但許多有害的郵件信息也隨之而來。針對這些問題,在VC開發環境下,研究并實現了基于Winpcap的郵件監控及還原系統。該系統設計了多線程模塊,可以同時處理50個郵件及附件信息,并對網絡數據包的捕獲、過濾與重組、信頭解碼、附件處理、信體內容提取等模塊進行了算法優化。功能測試和驗證結果表明,該系統穩定、可擴展,達到實時性要求。
關鍵詞: Winpcap;數據包捕獲郵件重組;多線程;郵件解碼

    當前流行的電子郵件收發主要有兩種方式:第一種是使用Fire-Fox、IE等瀏覽器軟件登錄ISP的Web站點;第二種是使用Foxmail、Outlook等郵件客戶端軟件連接郵件服務器,通過SMTP/POP3協議收發郵件。這里主要討論基于SMTP/POP3協議郵件信息的獲取與還原技術。實驗結果表明,本系統有效實現了郵件信息捕獲和信息還原等功能,具有較高的效率和較好的時實性。
1 網絡監控相關理論基礎
1.1 Winpcap原理

    Winpcap[1-3]為數據包捕獲提供了一套標準接口,它是由伯克利分組捕獲庫派生而來的分組捕獲庫,在Win32平臺上實現對底層包的捕獲,其體系結構包括3個模塊:(1)NPF(內核級的數據報過濾器)核心的包過濾驅動程序;(2)底層的動態連接庫Packet.dll(數據包低級驅動程序庫)為Win32平臺提供了一個公共的接口;(3)高層的獨立于操作系統的庫Wpcap.dll(數據包高級驅動程序庫)[4]。
1.2 網絡監控及郵件信息獲取原理
    監控主體可以分為郵件服務器端監控、郵件客戶端監控和第三方網絡監控。本文闡述的是基于第三方網絡監控的郵件安全監控系統,即將網絡上的關于郵件協議的數據包進行截獲,并結合內容檢測技術和協議分析技術對郵件進行有效監聽。這種監控方式允許在各個組織內部靈活配置監控規則,并且響應迅速。
    網卡具有4種工作模式:直接模式、多播傳送模式、廣播模式和混雜模式[5]。網卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀與發給對應地址的幀。如果采用混雜模式,網卡將接收同一網絡內所有主機所發送的數據包。
1.3 SMTP/POP3協議的郵件信息獲取
    由于系統主要分析SMTP/POP3協議傳輸方式下的郵件信息獲取,因此主要針對SMTP協議、POP3協議網絡數據進行分析。根據協議特點只需要對感興趣的網絡連接進行數據重組,其他協議的網絡數據可以直接丟棄。所以只要獲取端口地址為25和110的數據包即可,如圖1所示。

2 監控郵件及郵件信息還原的分析與設計
    整個系統的設計可分為兩個部分:一個郵件監控部分,計算機運行在Windows系統下,目的是截獲經過網卡的郵件數據包;另一個是郵件解析和還原部分,主要目的是對SMTP/POP3文件進行解析,還原成原來的可讀郵件信息,并對還原后的文件進行閱讀查看、刪除等管理操作,系統的總體框架如圖2所示。系統由包捕獲功能模塊、IP協議數據解析模塊、TCP協議數據解析過濾模塊、郵件協議解析模塊、郵件解碼模塊、郵件保存模塊組成。

    下面重點分析系統中郵件重組和解碼等關鍵問題和算法的設計。
2.1 SMTP/POP3協議通信方式
    SMTP/POP3協議采用會話方式工作,通信雙方通過命令請求和命令響應進行交互,完成郵件的發送或接收。提取基于SMTP/POP3協議傳輸的郵件信息關鍵在于郵件會話的識別。下面以POP3為例,說明交互過程[6]。
2.2 POP3/SMTP還原總流程圖及還原算法
    基于POP3/SMTP協議的郵件信息還原涉及四方面的內容:數據包保存、重要域值提取、郵件內容的解析以及附件的解析還原。
    下面主要介紹面向傳輸層的數據分析還原,總流程如圖3所示。

    在對郵件協議交互過程有很深刻的認識后可對電子郵件數據包進行截獲。為了提高運行速度,防止丟包現象,提高還原文件效率,優化程序,作者創建3個線程分別執行任務:
    (1)主線程是Winpcap抓包,整個系統在貫徹主線程的基礎上對網絡層、傳輸層和應用層進行了分析和研究;
    (2)線程1是協議分析,網絡通信有很多協議,因此協議分析是關鍵,針對不同的協議有不同的分析方法,因此系統具有良好的可擴展性,可方便地添加對新的網絡協議的支持;
    (3)線程2是對電子郵件數據包的解析并還原,因此當捕獲郵件文件數據包時,打開線程組2,可以同時循環接收和保存50個郵件,不過此時這些線程是休眠狀態,可能客服端只是對SMTP/POP3服務器的一般交互過程,沒有郵件傳輸,因此要仔細觀察和分析整個郵件服務器交互過程,如果分析客戶端郵件發送動作時,觸發線程2進行郵件信息的重組、保存,直到完整地保存了整個郵件及附件后關閉線程。
    此時作者設計了SMTP/POP3郵件信息重組子流程圖,如圖4所示。

    郵件數據包重組的策略也是文件還原系統的核心,下面詳細說明捕獲和重組算法:
    (1)根據SMTP/POP3命令的參數,監聽端口號25(或110)來分析服務器與客服端之間的交互過程;
    (2)對經過網卡數據包的命令進行字符串匹配,當匹配的字符串DATA(Data)成功時;客服端要向SMTP服務器發送郵件,創建文件名為EmailFile[file_num/50],這時打開可以同時處理50個郵件的線程2進行監聽,跳至(4);
    (3)當匹配的字符串RETR成功時,客服端要向POP3客戶端接收郵件,創建文件名為EmailFile1[file1_num/50],這時打開可以同時處理50個郵件的線程2進行監聽,跳至(5);
    (4)把SMTP數據包的當前序列碼為sequence和數據偏移量data_len保存,設置標記位STRAT=1下一個包的序列碼為next_seq_num[file_num/50]。其大小為:next_seq_num[file_num/50]=sequence+data_len;保存發送郵件;跳至(6);
    (5)把當前POP3數據包的序列碼為sequence和數據偏移量data_len保存,設置標記位STRAT1=1下一個包的序列碼為next_seq_num[file1_num/50],其大小為:next_seq_
num[file1_num/50]=sequence+data_len;保存接收郵件,跳至(7);
    (6)開始重組SMTP郵件數據包并把當前序列碼記為sequence和數據偏移量 data_len,上次一個包的序列碼為next_seq_num[i]。以大小為50的循環序列進行一一判斷:當滿足next_seq_num[i]==sequence,則為該文件EmailFile[file_num/50]的數據,不等則丟棄,這樣的目的是為了在監聽多郵件傳輸時確保不會導致捕獲的數據混亂,跳至(8);
    (7)開始重組POP3郵件數據包并把當前序列碼即為sequence和數據偏移量 data_len,上次一個包的序列碼為next_seq_num[i]。以周期為50的序列進行判斷:next_
seq_num[i]==sequence,則為該文件EmailFile1[file1_num/50]的數據,不等則丟棄,這樣的目的是為了在重組多郵件傳輸時確保不會導致捕獲的數據混亂;
    (8)當數據包以一個QUIT命令來結束數據連接,則郵件SMTP/POP3郵件傳輸結束,設置標記位STRAT為0,設置標記位STRAT1為0;
    (9)關閉文件,關閉線程,停止郵件捕獲和重組子程序。
    從算法可以得出,首先識別郵件會話狀態的方法來確定郵件信息、重組郵件數據包,并保存在臨時文件夾,待郵件數據包解析和還原時調用。只需捕獲端口是80、25或110的數據包。
2.3 電子郵件內容的提取與解碼模塊的設計與實現
    互聯網上使用的電子郵件基本都遵循MIME規范,MIME郵件傳遞實際是一個經過特殊編碼并以約定格式進行網絡傳輸的,因此只需提取存儲在郵件各種域中的位置、格式和編碼信息,根據這些信息從字符序列中提取出對應的字符內容對其進行解碼,就可以得到需要的有關內容。下面是帶附件和不帶附件的郵件信息提取和解析模塊設計。流程圖如圖5所示。

    這個部分主要是郵件內容的關鍵字匹配,主要采用精確關鍵字匹配,它將待檢索的數據串和關鍵詞組成的模式串進行逐字比較,只有在數據串中發現與模式串完全一致的部分之后,關鍵詞匹配才算成功。把郵件各部分內容讀取到字符串數組中,再根據MIME規范進行編寫相應的解碼函數,經過郵件解析,提取電子郵件各部分(如發信人、收信人、主題、正文等),并對包含編碼的部分進行解碼(Base64、Quoted-Printable等),還原為可理解的電子郵件。郵件正文數據包可能分幾個子段進行傳輸,此時要循環調用函數mult_bodydecode(),當有附件時,先把正文內容解碼之后,才進行附件的解碼,這也是調用附件解碼函數Email_Attachment()對附件進行還原。直到整個郵件解析完成才關閉文件和線程,完成郵件的還原。
    本系統主要是在編程上優化,提高數據包的分析和解碼效率和速度,由本文可以看出郵件數據分析、過濾、重組、解析、還原算法建立在基于Winpcap基礎之上,因此,該系統保留了Winpcap的抓包特點的同時,也克服了Winpcap部分不足。主要體現在以下兩點:進一步提高了分析的速度,同時大大提高分析的準確性;節約了協議分析時間。
    文中設計的網絡安全監控系統,選擇Windows2000作系統平臺,利用VC++6.0編寫程序,它是基于系統的底層進行設計,與操作系統緊密結合。通過在局域網中的使用和分析,它能實時地、動態地對局域網內的所有上網主機進行監視、控制與管理,系統穩定、效果好。

參考文獻
[1] 張偉,王韜,潘艷輝,等.基于Winpcap的數據包捕獲及應用[J].計算機工程與設計,2008,29(7):1649-
1651.
[2] 循序漸進學習使用Winpcap[EB/OL].中國協議分析網.http://www.cnpaf.net/,2005.
[3] 李雪瑩,劉寶旭,許榕生.基于WinPcap的網絡監控系統性能優化[J].計算機工程,2004,30(1):8-9.
[4] 趙英男,張秉權.MIME郵件結構格式分析[J].軟件技術,2001,20(2):50-53.
[5] 秦根建,張秉權.網絡數據包截獲機制研究[J].兵工自動化,2003,22(6):2-3.
[6] 唐燕.POP3協議解析及簡單實現[J].網絡通訊與安全,2007,16(2):951-952.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区三区福利| 夜夜精品视频一区二区| 亚洲精品日本| 在线国产精品一区| 国内精品久久久久伊人av| 国产精品乱码| 欧美日韩国产综合新一区| 欧美极品色图| 欧美久久久久久久久久| 欧美激情1区2区| 免费欧美日韩| 欧美成人r级一区二区三区| 久久久久欧美| 久久婷婷激情| 久久性天堂网| 久久综合中文| 狼狼综合久久久久综合网| 久久久久久国产精品mv| 久久久.com| 久久久最新网址| 久久久久久伊人| 另类人畜视频在线| 女人香蕉久久**毛片精品| 免费一级欧美片在线观看| 欧美3dxxxxhd| 欧美精品一区二区三| 欧美日韩爆操| 欧美日韩性生活视频| 欧美性理论片在线观看片免费| 欧美日韩在线免费视频| 欧美午夜影院| 国产乱码精品一区二区三区五月婷| 国产精品一区二区三区四区 | 午夜精品一区二区三区在线视| 亚洲免费小视频| 欧美一级淫片aaaaaaa视频| 欧美在线播放一区| 美女爽到呻吟久久久久| 欧美激情第4页| 国产精品v一区二区三区| 国产日韩久久| 亚洲国产一二三| 一区二区三区国产精华| 亚洲欧美一区在线| 久久国产66| 夜夜躁日日躁狠狠久久88av| 午夜欧美精品| 久久婷婷久久一区二区三区| 欧美激情一区二区三区四区| 欧美亚洲第一页| 国产小视频国产精品| 亚洲高清av| 亚洲无线视频| 亚洲国产高清高潮精品美女| 亚洲麻豆国产自偷在线| 亚洲自拍偷拍麻豆| 久久一二三国产| 欧美日韩一区综合| 韩国精品久久久999| 亚洲精品老司机| 欧美一区二区私人影院日本| 日韩视频免费在线观看| 欧美亚洲综合在线| 欧美韩日一区| 国产日韩欧美91| 日韩视频在线永久播放| 欧美在线亚洲综合一区| 一区二区冒白浆视频| 久久精品人人做人人爽电影蜜月| 欧美国产一区在线| 国产日韩欧美精品综合| 亚洲日本欧美日韩高观看| 亚洲欧美日产图| 日韩午夜电影av| 久久久久高清| 欧美日韩高清在线观看| 国内精品国产成人| 亚洲视频精品在线| 亚洲精品免费在线| 欧美中文字幕视频在线观看| 欧美精品1区| 韩国一区二区三区在线观看| 亚洲视频axxx| 99精品久久免费看蜜臀剧情介绍| 久久精品伊人| 国产精品免费观看在线| 亚洲激情综合| 久久激情五月丁香伊人| 午夜日韩福利| 欧美日韩国产成人在线91| 伊人久久大香线| 午夜精品久久久久影视 | 国产精品扒开腿爽爽爽视频 | 久久精品欧洲| 国产精品乱子久久久久| 91久久在线| 亚洲高清免费在线| 欧美在线播放视频| 国产精品va在线播放| 亚洲日本视频| 亚洲日本中文字幕免费在线不卡| 久久成人免费网| 国产精品久久激情| 99re6这里只有精品视频在线观看| 久久精品一区二区| 久久国产精品一区二区三区四区| 欧美日韩在线视频一区| 亚洲激情第一区| 亚洲欧洲日本一区二区三区| 久久久精品国产一区二区三区| 国产精品美女主播| 在线亚洲精品| 亚洲天堂激情| 欧美日韩久久不卡| 亚洲精品五月天| 99精品国产在热久久下载| 欧美激情第1页| 91久久久在线| 亚洲免费av观看| 欧美电影在线播放| 在线观看中文字幕不卡| 亚洲第一网站免费视频| 久久久亚洲国产天美传媒修理工 | 日韩亚洲精品视频| 亚洲视频大全| 欧美午夜不卡| 亚洲一区二区三区免费观看| 亚洲欧美日韩精品在线| 国产精品裸体一区二区三区| 亚洲婷婷在线| 欧美一区二区高清在线观看| 国产精品一区在线观看| 午夜一区二区三视频在线观看 | 国产性天天综合网| 久久精品视频免费观看| 久久亚洲精品欧美| 亚洲福利视频专区| 一本久久综合亚洲鲁鲁五月天| 欧美日韩免费观看一区=区三区| 亚洲乱码久久| 亚洲综合另类| 国产精品永久免费观看| 性欧美video另类hd性玩具| 久久久久se| 亚洲国产一二三| 亚洲一区二区三区免费视频| 国产精品每日更新| 欧美一级在线亚洲天堂| 美女精品视频一区| 亚洲裸体俱乐部裸体舞表演av| 正在播放欧美一区| 国产精品一区二区你懂得| 欧美一区二区日韩| 欧美成人一区在线| av成人免费在线观看| 欧美中文字幕在线| 136国产福利精品导航| 在线一区二区三区四区| 国产精品日日做人人爱| 久久国产精品99精品国产| 欧美国产精品中文字幕| 中文在线资源观看网站视频免费不卡 | 亚洲一区二区在线免费观看视频| 国产精品稀缺呦系列在线| 久久精品国产欧美亚洲人人爽| 欧美大片免费观看在线观看网站推荐| 亚洲伦理在线观看| 久久国产精品99久久久久久老狼 | 亚洲欧美在线另类| 国内成人精品一区| 一区二区三区国产盗摄| 国产亚洲精品aa午夜观看| 日韩网站在线看片你懂的| 国产精品亚洲综合| 亚洲人妖在线| 国产精品无码永久免费888| 亚洲国产欧美精品| 欧美视频三区在线播放| 久久成人免费日本黄色| 欧美日韩精品| 久久国产婷婷国产香蕉| 欧美三区免费完整视频在线观看| 欧美一区二区在线免费观看| 欧美日韩岛国| 欧美中文在线视频| 欧美日韩一区高清| 欧美在线观看www| 欧美色图天堂网| 亚洲黄色天堂| 国产日韩精品电影| 亚洲视频在线观看| 亚洲国产成人高清精品| 久久高清国产| 夜夜夜精品看看| 女同性一区二区三区人了人一| 亚洲欧美另类在线| 欧美日韩免费观看一区=区三区| 亚洲电影毛片| 国产欧美日韩在线播放| 在线一区二区视频|