必威电竞|足球世界杯竞猜平台

ethereal
來(lái)源:互聯(lián)網(wǎng)

Ethereal (Ethereal:A Network Packet Sniffing Tool)是當(dāng)前較為流行的一種計(jì)算機(jī)網(wǎng)絡(luò)調(diào)試和數(shù)據(jù)包嗅探軟件。Ethereal 基本類(lèi)似于tcpdump,但Ethereal 還具有設(shè)計(jì)完美的 GUI 和眾多分類(lèi)信息及過(guò)濾選項(xiàng)。用戶(hù)通過(guò) Ethereal,同時(shí)將網(wǎng)卡插入混合模式,可以查看到網(wǎng)絡(luò)中發(fā)送的所有通信流量。 Ethereal 應(yīng)用于故障修復(fù)、分析、軟件和協(xié)議開(kāi)發(fā)以及教育領(lǐng)域。它具有用戶(hù)對(duì)協(xié)議分析器所期望的所有標(biāo)準(zhǔn)特征,并具有其它同類(lèi)產(chǎn)品所不具備的有關(guān)特征。

發(fā)展簡(jiǎn)史

1997年底,Gerald Combs需要一個(gè)能夠追蹤網(wǎng)絡(luò)流量的工具軟件作為其工作上的輔助。因此他開(kāi)始撰寫(xiě)Ethereal軟件。

Ethereal 在經(jīng)過(guò)幾次中斷開(kāi)發(fā)的事件過(guò)后,終于在1998年7月發(fā)布其第一個(gè)版本 v0.2.0。自此之后,Combs收到了來(lái)自全世界的補(bǔ)丁、錯(cuò)誤回報(bào)與鼓勵(lì)信件。Ethereal的發(fā)展就此開(kāi)始。不久之后,Gilbert Ramirez 看到了這套軟件的開(kāi)發(fā)潛力并開(kāi)始參予低級(jí)程序的開(kāi)發(fā)。1998年10月,來(lái)自 Network Appliance 公司的 Guy Harris 在查找一套比tcpview(另外一套網(wǎng)絡(luò)數(shù)據(jù)包截取程序)更好的軟件。于是他也開(kāi)始參與Ethereal的開(kāi)發(fā)工作。

1998年底,一位在教授 TCP/IP 課程的講師 Richard Sharpe,看到了這套軟件的發(fā)展?jié)摿Γ箝_(kāi)始參與開(kāi)發(fā)與加入新協(xié)定的功能。在當(dāng)時(shí),新的通信協(xié)定的制定并不復(fù)雜,因此他開(kāi)始在Ethereal上新增的數(shù)據(jù)包截取功能,幾乎包含了當(dāng)時(shí)所有通信協(xié)定。

自此之后,數(shù)以千計(jì)的人開(kāi)始參與Ethereal的開(kāi)發(fā),多半是因?yàn)橄M茏孍thereal截取特定的,尚未包含在Ethereal默認(rèn)的網(wǎng)絡(luò)協(xié)定的數(shù)據(jù)包而參予新的開(kāi)發(fā)。

2006年6月,因?yàn)樯棠繕?biāo)問(wèn)題,Ethereal更名為Wireshark

軟件特征

Ethereal 主要具有以 下特征:

在實(shí)時(shí)時(shí)間內(nèi),從網(wǎng)絡(luò)連接處捕獲數(shù)據(jù),或者從被捕獲文件處讀取數(shù)據(jù);

Ethereal 可以讀取從 tcpdump(libpcap)、網(wǎng)絡(luò)通用嗅探器(被壓縮和未被壓縮)、SnifferTM 專(zhuān)業(yè)版、NetXrayTM、Sun snoop 和 atmsnoop、Shomiti/Finisar 測(cè)試員、AIX 的 iptrace、微軟 的網(wǎng)絡(luò)監(jiān)控器、Novell 的 LANalyzer、RADCOM 的 WAN/LAN 分析器、 ISDN4BSD 項(xiàng)目的 HP-UX nettl 和 i4btrace、思科 安全 IDS iplog 和 pppd 日志( pppdump 格式)、WildPacket 的 EtherPeek/TokenPeek/AiroPeek 或者可視網(wǎng)絡(luò)的可視 UpTime 處捕獲的文件。此外 Ethereal 也能從 Lucent/Ascend WAN 路由器和 東芝 ISDN 路由器中讀取跟蹤報(bào)告,還能從 VMS 的 TCPIP 讀取輸出文本和 DBS Etherwatch。

從以太網(wǎng)、FDDI、PPP、令牌環(huán)、IEEE 802.11、ATM 上的 IP 和回路接口(至少是某些系統(tǒng),不是所有系統(tǒng)都支持這些類(lèi)型)上讀取實(shí)時(shí)數(shù)據(jù)。

通過(guò) GUI 或 TTY 模式 tethereal 程序,可以訪問(wèn)被捕獲的網(wǎng)絡(luò)數(shù)據(jù)。

通過(guò) editcap 程序的命令行交換機(jī),有計(jì)劃地編輯或修改被捕獲文件。

當(dāng)前602協(xié)議可被分割。

輸出文件可以被保存或打印為純文本或 PostScript格式。

通過(guò)顯示過(guò)濾器精確顯示數(shù)據(jù)。

顯示過(guò)濾器也可以選擇性地用于高亮區(qū)和顏色包摘要信息。

所有或部分被捕獲的網(wǎng)絡(luò)跟蹤報(bào)告都會(huì)保存到磁盤(pán)中。

系統(tǒng)介紹

Ethereal是一個(gè)開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持Linux和windows平臺(tái)。Ethereal起初由Gerald Combs開(kāi)發(fā),隨后由一個(gè)松散的Etheral團(tuán)隊(duì)組織進(jìn)行維護(hù)開(kāi)發(fā)。它目前所提供的強(qiáng)大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為Ethereal添加新的協(xié)議解析器,如今Ethereal已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開(kāi)發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中加入一個(gè)新的協(xié)議解析器很簡(jiǎn)單,一個(gè)不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進(jìn)行自己的協(xié)議開(kāi)發(fā)。這都?xì)w功于Ehereal良好的設(shè)計(jì)結(jié)構(gòu)。事實(shí)上由于網(wǎng)絡(luò)上各種協(xié)議種類(lèi)繁多,各種新的協(xié)議層出不窮。一個(gè)好的協(xié)議分析器必需有很好的可擴(kuò)展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)發(fā)展的需要不斷加入新的協(xié)議解析器。

1 Ethereal的捕包平臺(tái)

網(wǎng)絡(luò)分析系統(tǒng)首先依賴(lài)于一套捕捉網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)庫(kù)。這套函數(shù)庫(kù)工作在在網(wǎng)絡(luò)分析系統(tǒng)模塊的最底層。作用是從網(wǎng)卡取得數(shù)據(jù)包或者根據(jù)過(guò)濾規(guī)則取出數(shù)據(jù)包的子集,再轉(zhuǎn)交給上層分析模塊。從協(xié)議上說(shuō),這套函數(shù)庫(kù)將一個(gè)數(shù)據(jù)包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。

在Linux系統(tǒng)中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包過(guò)濾器的一種的實(shí)現(xiàn),BPF(BSD Packet Filter)。Libpcap是一個(gè)基于BPF的開(kāi)放源碼的捕包函數(shù)庫(kù)。現(xiàn)有的大部分Linux捕包系統(tǒng)都是基于這套函數(shù)庫(kù)或者是在它基礎(chǔ)上做一些針對(duì)性的改進(jìn)。

在window系統(tǒng)中,意大利人Fulvio Risso和Loris Degioanni提出并實(shí)現(xiàn)了winpcap函數(shù)庫(kù),作者稱(chēng)之為NPF。由于NPF的主要思想就是來(lái)源于BPF,它的設(shè)計(jì)目標(biāo)就是為windows系統(tǒng)提供一個(gè)功能強(qiáng)大的開(kāi)發(fā)式數(shù)據(jù)包捕獲平臺(tái),希望在Linux系統(tǒng)中的網(wǎng)絡(luò)分析工具經(jīng)過(guò)簡(jiǎn)單編譯以后也可以移植到windows中,因此這兩種捕包架構(gòu)是非常相似的。就實(shí)現(xiàn)來(lái)說(shuō)提供的函數(shù)調(diào)用接口也是一致的。

Ethereal網(wǎng)絡(luò)分析系統(tǒng)也需要一個(gè)底層的抓包平臺(tái),在Linux中是采用Libpcap函數(shù)庫(kù)抓包,在windows系統(tǒng)中采用winpcap函數(shù)庫(kù)抓包。

2 層次化的數(shù)據(jù)包協(xié)議分析方法

取得捕包函數(shù)捕回的數(shù)據(jù)包后就需要進(jìn)行協(xié)議分析和協(xié)議還原工作了。由于OSI的7層協(xié)議模型,協(xié)議數(shù)據(jù)是從上到下封裝后發(fā)送的。對(duì)于協(xié)議分析需要從下至上進(jìn)行。首先對(duì)網(wǎng)絡(luò)層的協(xié)議識(shí)別后進(jìn)行組包還原然后脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進(jìn)行下去直到應(yīng)用層。

Ip

| \

Tcp udp

| \

HTTP TFTP

由于網(wǎng)絡(luò)協(xié)議種類(lèi)很多,就Ethereal所識(shí)別的500多種協(xié)議來(lái)說(shuō),為了使協(xié)議和協(xié)議間層次關(guān)系明顯。從而對(duì)數(shù)據(jù)流里的各個(gè)層次的協(xié)議能夠逐層處理。Ethereal系統(tǒng)采用了協(xié)議樹(shù)的方式。上圖就是一個(gè)簡(jiǎn)單的協(xié)議樹(shù)。如果協(xié)議A的所有數(shù)據(jù)都是封裝在協(xié)議B里的,那么這個(gè)協(xié)議A就是協(xié)議B是另外一個(gè)協(xié)議的兒子節(jié)點(diǎn)。我們將最低層的無(wú)結(jié)構(gòu)數(shù)據(jù)流作為根接點(diǎn)。那么具有相同父節(jié)點(diǎn)的協(xié)議成為兄弟節(jié)點(diǎn)。那么這些擁有同樣父協(xié)議兄弟節(jié)點(diǎn)協(xié)議如何互相區(qū)分了?Ethereal系統(tǒng)采用協(xié)議的特征字來(lái)識(shí)別。每個(gè)協(xié)議會(huì)注冊(cè)自己的特征字。這些特征字給自己的子節(jié)點(diǎn)協(xié)議提供可以互相區(qū)分開(kāi)來(lái)的標(biāo)識(shí)。比如tcp協(xié)議的port字段注冊(cè)后。 Tcp.port=21就可以認(rèn)為是斷點(diǎn)續(xù)傳協(xié)議,特征字可以是協(xié)議規(guī)范定義的任何一個(gè)字段。比如ip協(xié)議就可以定義proto字段為一個(gè)特征字。

在Ethereal中注冊(cè)一個(gè)協(xié)議解析器首先要指出它的父協(xié)議是什么。另外還要指出自己區(qū)別于父節(jié)點(diǎn)下的兄弟接點(diǎn)協(xié)議的特征。比如ftp協(xié)議。在Ethereal中他的父接點(diǎn)是tcp協(xié)議,它的特征就是tcp協(xié)議的port字段為21。

這樣當(dāng)一個(gè)端口為21的tcp數(shù)據(jù)流來(lái)到時(shí)。首先由tcp協(xié)議注冊(cè)的解析模塊處理,處理完之后通過(guò)查找協(xié)議樹(shù)找到自己協(xié)議下面的子協(xié)議,判斷應(yīng)該由那個(gè)子協(xié)議來(lái)執(zhí)行,找到正確的子協(xié)議后,就轉(zhuǎn)交給斷點(diǎn)續(xù)傳注冊(cè)的解析模塊處理。這樣由根節(jié)點(diǎn)開(kāi)始一層層解析下去。

由于采用了協(xié)議樹(shù)加特征字的設(shè)計(jì),這個(gè)系統(tǒng)在協(xié)議解析上由了很強(qiáng)的擴(kuò)展性,增加一個(gè)協(xié)議解析器只需要將解析函數(shù)掛到協(xié)議樹(shù)的相應(yīng)節(jié)點(diǎn)上即可。

3 基于插件技術(shù)的協(xié)議分析器

所謂插件技術(shù),就是在程序的設(shè)計(jì)開(kāi)發(fā)過(guò)程中,把整個(gè)應(yīng)用程序分成宿主程序和插件兩個(gè)部分,宿主程序與插件能夠相互通信,并且,在宿主程序不變的情況下,可以通過(guò)增減插件或修改插件來(lái)調(diào)整應(yīng)用程序的功能。運(yùn)用插件技術(shù)可以開(kāi)發(fā)出伸縮性良好、便于維護(hù)的應(yīng)用程序。它著名的應(yīng)用實(shí)例有:媒體播放器winamp、微軟網(wǎng)絡(luò)瀏覽器ie等。

由于現(xiàn)在網(wǎng)絡(luò)協(xié)議種類(lèi)繁多,為了可以隨時(shí)增加新的協(xié)議分析器,一般的協(xié)議分析器都采用插件技術(shù),這樣如果需要對(duì)一個(gè)新的協(xié)議分析只需要開(kāi)發(fā)編寫(xiě)這個(gè)協(xié)議分析器并調(diào)用注冊(cè)函數(shù)在系統(tǒng)注冊(cè)就可以使用了。通過(guò)增加插件使程序有很強(qiáng)的可擴(kuò)展性,各個(gè)功能模塊內(nèi)聚。

在協(xié)議分析器中新增加一個(gè)協(xié)議插件一般需要插件安裝或者注冊(cè),插件初始化,插件處理3個(gè)步驟,下面以Ethereal為例進(jìn)行分析如何利用插件技術(shù)新增加一個(gè)協(xié)議分析模塊。

Ethereal由于采用插件技術(shù),一個(gè)新加入開(kāi)發(fā)的程序員開(kāi)發(fā)一種新的協(xié)議分析模塊的時(shí)候不需要了解所有的代碼,他只需要寫(xiě)好這個(gè)協(xié)議模塊的函數(shù)后,寫(xiě)一個(gè)格式為proto_reg_handoff_XXX的函數(shù),在函數(shù)內(nèi)調(diào)用注冊(cè)函數(shù)告訴系統(tǒng)在什么時(shí)候需要調(diào)用這個(gè)協(xié)議模塊。比如

你事先寫(xiě)好了一個(gè)名為dissect_myprot的協(xié)議解析模塊,它是用來(lái)解析tcp協(xié)議端口為250的數(shù)據(jù)。可以利用這些語(yǔ)句來(lái)將這個(gè)解析器注冊(cè)到系統(tǒng)中

proto_reg_handoff_myprot(void)

{

dissector_handle_t myprot_handle;

myprot_handle = create_dissector_handle(dissect_myprot,

proto_myprot);

dissector_add("tcp.port", 250, myprot_handle);

}

這段代碼告訴系統(tǒng)當(dāng)tcp協(xié)議數(shù)據(jù)流端口為250的時(shí)候要調(diào)用dissect_myprot這個(gè)函數(shù)模塊。

在Ethereal中有一個(gè)腳本專(zhuān)門(mén)來(lái)發(fā)現(xiàn)開(kāi)發(fā)者定義的類(lèi)式proto_reg_handoff_xxx這樣的注冊(cè)函數(shù)名,然后自動(dòng)生成調(diào)用這些注冊(cè)函數(shù)的代碼。這樣開(kāi)發(fā)者不需要知道自己的注冊(cè)函數(shù)如何被調(diào)用的。這樣一個(gè)新的協(xié)議分析模塊就加入到系統(tǒng)中了。

由于采用了插件方式,Ethereal良好的結(jié)構(gòu)設(shè)計(jì)讓開(kāi)發(fā)者只需要關(guān)系自己開(kāi)發(fā)的協(xié)議模塊,不需要關(guān)心整個(gè)系統(tǒng)結(jié)構(gòu),需要將模塊整合進(jìn)系統(tǒng)只需要寫(xiě)一個(gè)注冊(cè)函數(shù)即可,連初始化時(shí)調(diào)用這個(gè)注冊(cè)函數(shù)都由腳本自動(dòng)完成了。正是因?yàn)橛泻芎玫捏w系結(jié)構(gòu),這個(gè)系統(tǒng)才能夠開(kāi)發(fā)出如此多的協(xié)議解析器。

盡管Ethereal是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),但Ethereal仍然有一些可以改進(jìn)的地方,一個(gè)優(yōu)秀的網(wǎng)絡(luò)分析器,盡可能的正確分析出數(shù)據(jù)協(xié)議和高效的處理數(shù)據(jù)是兩個(gè)重要的指標(biāo)。在協(xié)議識(shí)別方面Ethereal大多采用端口識(shí)別,有少量協(xié)議采用內(nèi)容識(shí)別。這就讓一些非標(biāo)準(zhǔn)端口的協(xié)議數(shù)據(jù)沒(méi)有正確解析出來(lái)。比如斷點(diǎn)續(xù)傳協(xié)議如果不是21端口的話(huà),Ethereal就無(wú)法識(shí)別出來(lái),只能作為tcp數(shù)據(jù)處理。另外對(duì)于內(nèi)容識(shí)別式。Ethereal是將所以?xún)?nèi)容識(shí)別的函數(shù)組成一張入口表。每次協(xié)議數(shù)據(jù)需要內(nèi)容識(shí)別時(shí),按字母順序逐個(gè)調(diào)用表里的每個(gè)識(shí)別函數(shù)。比如對(duì)于識(shí)別雅虎 massanger協(xié)議。主要是看數(shù)據(jù)前幾個(gè)字節(jié)是不是’ymsg’.由于協(xié)議名為y開(kāi)頭。所以當(dāng)識(shí)別出協(xié)議時(shí)已經(jīng)把所有內(nèi)容識(shí)別函數(shù)調(diào)用了一遍。這些都是由于Ethereal沒(méi)有實(shí)現(xiàn)tcp協(xié)議棧,無(wú)法做到流級(jí)別的識(shí)別。導(dǎo)致在協(xié)議識(shí)別方面有點(diǎn)缺陷。

應(yīng)用范圍

Ethereal 是一種開(kāi)放源代碼的許可軟件,允許用戶(hù)向其中添加改進(jìn)方案。Ethereal 適用于當(dāng)前所有較為流行的計(jì)算機(jī)系統(tǒng),包括 unixLinuxWindows

使用入門(mén)

Ethereal 可以用來(lái)從網(wǎng)絡(luò)上抓包,并能對(duì)包進(jìn)行分析。下面介紹windows 下Ethereal 的使用方法:

安裝

1)安裝winpcap

2)安裝Ethereal

使用

windows 程序,使用很簡(jiǎn)單。

啟動(dòng)ethereal 以后,選擇菜單Capture->Start ,就OK 了。當(dāng)你不想抓的時(shí)候,按一下stop,抓的包就會(huì)顯示在面板中,并且已經(jīng)分析好了。

Ethereal使用-capture選項(xiàng)

interface: 指定在哪個(gè)接口(網(wǎng)卡)上抓包。一般情況下都是單網(wǎng)卡,所以使用缺省的就可以了

Limit each packet: 限制每個(gè)包的大小,缺省情況不限制

Capture packets in promiscuous mode: 是否打開(kāi)混雜模式。如果打開(kāi),抓取所有的數(shù)據(jù)包。一般情況下只需要監(jiān)聽(tīng)本機(jī)收到或者發(fā)出的包,因此應(yīng)該關(guān)閉這個(gè)選項(xiàng)。

Filter:過(guò)濾器。只抓取滿(mǎn)足過(guò)濾規(guī)則的包(可暫時(shí)略過(guò))

File:如果需要將抓到的包寫(xiě)到文件中,在這里輸入文件名稱(chēng)。

use ring buffer:是否使用循環(huán)緩沖。缺省情況下不使用,即一直抓包。注意,循環(huán)緩沖只有在寫(xiě)文件的時(shí)候才有效。如果使用了循環(huán)緩沖,還需要設(shè)置文件的數(shù)目,文件多大時(shí)回卷

其他的項(xiàng)選擇缺省的就可以了

Ethereal的抓包過(guò)濾器

抓包過(guò)濾器用來(lái)抓取感興趣的包,用在抓包過(guò)程中。抓包過(guò)濾器使用的是li中亞銀行p 過(guò)濾器語(yǔ)言,在tcpdump 的手冊(cè)中有詳細(xì)的解釋?zhuān)窘Y(jié)構(gòu)是: [not] primitive [and|or [not] primitive ...]

個(gè)人觀點(diǎn),如果你想抓取某些特定的數(shù)據(jù)包時(shí),可以有以下兩種方法,你可以任選一種,個(gè)人比較偏好第二種方式:

1、在抓包的時(shí)候,就先定義好抓包過(guò)濾器,這樣結(jié)果就是只抓到你設(shè)定好的那些類(lèi)型的數(shù) 據(jù)包;

2、先不管三七二十一,把本機(jī)收到或者發(fā)出的包一股腦的抓下來(lái),然后使用下節(jié)介紹的顯 示過(guò)濾器,只讓Ethereal 顯示那些你想要的那些類(lèi)型的數(shù)據(jù)包;

etheral的顯示過(guò)濾器(重點(diǎn)內(nèi)容)

在抓包完成以后,顯示過(guò)濾器可以用來(lái)找到你感興趣的包,可以根據(jù)1)協(xié)議2)是否存在某個(gè)域3)域值4)域值之間的比較來(lái)查找你感興趣的包。

舉個(gè)例子,如果你只想查看使用tcp 協(xié)議的包,在ethereal 窗口的左下角的Filter 中輸入tcp,然后回車(chē),Ethereal 就會(huì)只顯示tcp 協(xié)議的包。

值比較表達(dá)式可以使用下面的操作符來(lái)構(gòu)造顯示過(guò)濾器自然語(yǔ)言類(lèi)c 表示舉例eq == ip.addr==10.1.10.20 ne != ip.addr!=10.1.10.20 gt > frame.pkt_len>10 lt < frame.pkt_len<10 ge >= frame.pkt_len>=10 le <= frame.pkt_len<=10

表達(dá)式組合可以使用下面的邏輯操作符將表達(dá)式組合起來(lái)自然語(yǔ)言類(lèi)c 表示舉例and && 邏輯與,比如ip.addr=10.1.10.20&&tcp.flag.fin or || 邏輯或,比如ip.addr=10.1.10.20||ip.addr=10.1.10.21 xor ^^ 異或,如tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == not ! 邏輯非,如 !llc

在Ethereal 使用協(xié)議插件

Ethereal 能夠支持許多協(xié)議,但有些協(xié)議需要安裝插件以后才能解,比如H.323,以H.323 協(xié)議為例,首先下載Ethereal 的H.323 插件,

1)啟動(dòng)Ethereal

2)菜單Edit->Preference

3)單擊Protocols 前面的"+"號(hào),展開(kāi)Protocols 4)找到Q931 ,并單擊

5)確保"Desegment.... TCP segments" 是選中的(即方框被按下去)

6)單擊TCP

7)確保"Allow....TCP streams" 是選中的

8)確保沒(méi)有選中"Check....TCP checksum" 和"Use....sequence numbers"

9)單擊TPKT

10)確保"Desegment....TCP segments" 是選中的

11)點(diǎn)擊Save,然后點(diǎn)擊Apply ,然后點(diǎn)擊OK 你也完全可以不斷地重新安裝新版本winpcap 和Ethreal,這樣就可以不需在舊的ethreal 的版本中安裝新的插件來(lái)支持新的協(xié)議插件。這也是懶人的一種做法。

數(shù)據(jù)包

Ethereal是一個(gè)圖形用戶(hù)接口(GUI)的網(wǎng)絡(luò)嗅探器,能夠完成與TCPDUMP相同的功能,但操作界面要友好很多。Ehtereal和Tcpdump都依賴(lài)于pcap庫(kù)(libpcap),因此兩者在許多方面非常相似(如都使用相同的過(guò)濾規(guī)則和關(guān)鍵字)。Ethereal和其它圖形化的網(wǎng)絡(luò)嗅探器都使用相同的界面模式,如果能熟練地使用Ethereal,那么其它圖形用戶(hù)界面的嗅探器基本都可以操作。

Ethereal的安裝

在網(wǎng)站上可以下載到最新的Ethereal源碼包。

下面以Ethereal 0.9.9為例,講述如何安裝Ethereal,此處使用的操作系統(tǒng)是Red Hat 8.0。

首先下載最新的源碼包,并將其解壓縮:

# cd /usr/local/src/

# tar xvf ethereal-0.9.9.tar

TCPDUMP一樣,在編譯Ethereal之前應(yīng)先確定已經(jīng)安裝pcap庫(kù)(libpcap),這是編譯Ethereal時(shí)所必需的。如果該庫(kù)已經(jīng)安裝,就可以執(zhí)行下面的命令來(lái)編譯并安裝Ethereal:

# cd ethereal-0.9.9

# ./configure

# make

# make install

設(shè)置Ethereal的過(guò)濾規(guī)則 當(dāng)編譯并安裝好Ethereal后,就可以執(zhí)行“ethereal”命令來(lái)啟動(dòng)Ethereal。在用Ethereal截獲數(shù)據(jù)包之前,應(yīng)該為其設(shè)置相應(yīng)的過(guò)濾規(guī)則,可以只捕獲感興趣的數(shù)據(jù)包。Ethereal使用與TCPDUMP相似的過(guò)濾規(guī)則,并且可以很方便地存儲(chǔ)已經(jīng)設(shè)置好的過(guò)濾規(guī)則。要為Ethereal配置過(guò)濾規(guī)則,首先單擊“Edit”選單,然后選擇“Capture Filters...”菜單項(xiàng),打開(kāi)“Edit Capture Filter List”對(duì)話(huà)框(如圖1所示)。

因?yàn)榇藭r(shí)還沒(méi)有添加任何過(guò)濾規(guī)則,因而該對(duì)話(huà)框右側(cè)的列表框是空的。

在Ethereal中添加過(guò)濾器時(shí),需要為該過(guò)濾器指定名字及規(guī)則。例如,要在主機(jī)10.1.197.162間創(chuàng)建過(guò)濾器,可以在“Filter name”編輯框內(nèi)輸入過(guò)濾器名字“搜狐”,在“Filter string”編輯框內(nèi)輸入過(guò)濾規(guī)則“host 10.1.197.162 ”,然后單擊“New”按鈕即可,如圖2所示。

在Ethereal中使用的過(guò)濾規(guī)則和TCPDUMP幾乎完全一致,這是因?yàn)閮烧叨蓟趐cap庫(kù)的緣故。Ethereal能夠同時(shí)維護(hù)很多個(gè)過(guò)濾器。網(wǎng)絡(luò)管理員可以根據(jù)實(shí)際需要選用不同的過(guò)濾器,這在很多情況下是非常有用的。例如,一個(gè)過(guò)濾器可能用于截獲兩個(gè)主機(jī)間的數(shù)據(jù)包,而另一個(gè)則可能用于截獲ICMP包來(lái)診斷網(wǎng)絡(luò)故障。

當(dāng)所有需要的過(guò)濾器都創(chuàng)建好后,單擊“Save”按鈕保存創(chuàng)建的過(guò)濾器,然后單擊“Close”按鈕來(lái)關(guān)閉“Edit Capture Filter List”對(duì)話(huà)框。要將過(guò)濾器應(yīng)用于嗅探過(guò)程,需要在截獲數(shù)據(jù)包之前或之后指定過(guò)濾器。要為嗅探過(guò)程指定過(guò)濾器,并開(kāi)始截獲數(shù)據(jù)包,可以單擊“Capture”選單,選擇“Start...”選單項(xiàng),打開(kāi)“Capture Options”對(duì)話(huà)框,單擊該對(duì)話(huà)框中的“Filter:”按鈕,然后選擇要使用的過(guò)濾器,如圖3所示。

注意在“Capture Options”對(duì)話(huà)框中,“Update list of packets in real 時(shí)間”復(fù)選框被選中了。這樣可以使每個(gè)數(shù)據(jù)包在被截獲時(shí)就實(shí)時(shí)顯示出來(lái),而不是在嗅探過(guò)程結(jié)束之后才顯示所有截獲的數(shù)據(jù)包。

在選擇了所需要的過(guò)濾器后,單擊“OK”按鈕,整個(gè)嗅探過(guò)程就開(kāi)始了。Ethereal可以實(shí)時(shí)顯示截獲的數(shù)據(jù)包,因此能夠幫助網(wǎng)絡(luò)管理員及時(shí)了解網(wǎng)絡(luò)的運(yùn)行狀況,從而使其對(duì)網(wǎng)絡(luò)性能和流量能有一個(gè)比較準(zhǔn)確的把握。

用Ethereal分析數(shù)據(jù)包

Ethereal和其它的圖形化嗅探器使用基本類(lèi)似的界面,整個(gè)窗口被分成三個(gè)部分:最上面為數(shù)據(jù)包列表,用來(lái)顯示截獲的每個(gè)數(shù)據(jù)包的總結(jié)性信息;中間為協(xié)議樹(shù),用來(lái)顯示選定的數(shù)據(jù)包所屬的協(xié)議信息;最下邊是以十六進(jìn)制形式表示的數(shù)據(jù)包內(nèi)容,用來(lái)顯示數(shù)據(jù)包在物理層上傳輸時(shí)的最終形式。

使用Ethereal可以很方便地對(duì)截獲的數(shù)據(jù)包進(jìn)行分析,包括該數(shù)據(jù)包的源地址、目的地址、所屬協(xié)議等。

圖4是在Ethereal中對(duì)一個(gè)HTTP數(shù)據(jù)包進(jìn)行分析時(shí)的情形。

在圖4最上邊的數(shù)據(jù)包列表中,顯示了被截獲的數(shù)據(jù)包的基本信息。從圖中可以看出,當(dāng)前選中數(shù)據(jù)包的源地址是10.1.197.162,目的地址為61.135.150.65,該數(shù)據(jù)包所屬的協(xié)議是超文本傳輸協(xié)議(HTTP)。更詳細(xì)的信息表明該數(shù)據(jù)包中含有一個(gè)HTTP的GET命令,要求下載starrtlog.js文件到客戶(hù)端的Web瀏覽器。

圖4中間是協(xié)議樹(shù),通過(guò)協(xié)議樹(shù)可以得到被截獲的數(shù)據(jù)包的更多信息,如主機(jī)的MAC地址(Ethernet II)、IP地址(Internet Protocol)、TCP端口號(hào)(Transmission Control Protocol),以及HTTP協(xié)議的具體內(nèi)容(Hypertext Trnasfer Protocol)。通過(guò)擴(kuò)展協(xié)議樹(shù)中的相應(yīng)節(jié)點(diǎn),可以得到該數(shù)據(jù)包中攜帶的更詳盡的信息。

圖4最下邊是以十六制顯示的數(shù)據(jù)包的具體內(nèi)容,這是被截獲的數(shù)據(jù)包在物理媒體上傳輸時(shí)的最終形式,當(dāng)在協(xié)議樹(shù)中選中某行時(shí),與其對(duì)應(yīng)的十六進(jìn)制代碼同樣會(huì)被選中,這樣就可以很方便地對(duì)各種協(xié)議的數(shù)據(jù)包進(jìn)行分析。

Ethereal提供的圖形化用戶(hù)界面非常友好,管理員可以很方便地查看到每個(gè)數(shù)據(jù)包的詳細(xì)信息,協(xié)議樹(shù)及其對(duì)應(yīng)的十六進(jìn)制表示對(duì)分析每個(gè)數(shù)據(jù)包的目的很有幫助,綜合使用Ethereal和Tcpdump能夠基本滿(mǎn)足網(wǎng)絡(luò)管理員在Linux系統(tǒng)上的所有嗅探要示。

用EtherApe查看網(wǎng)絡(luò)流量

EtherApe也是一個(gè)圖形化的網(wǎng)絡(luò)嗅探器。與Ehtereal不同,EtherApe通過(guò)驗(yàn)證主機(jī)與主機(jī)之間的鏈接,圖形化地顯示網(wǎng)絡(luò)目前所處的狀態(tài)。EtherApe使用不同顏色的連線(xiàn)來(lái)表示位于不同主機(jī)之間的連接,而連線(xiàn)的粗細(xì)則表明主機(jī)間數(shù)據(jù)流量的大小。這些信息都是實(shí)時(shí)變化的,因而能夠協(xié)助管理員隨時(shí)了解到網(wǎng)絡(luò)中各部分流量的變化情況。

EtherApe的安裝

EhterApe支持Ethernet、FDDI和Token Ring等多種網(wǎng)絡(luò),能夠?qū)崟r(shí)地從網(wǎng)絡(luò)或文件中讀取網(wǎng)絡(luò)流量的變化情況。此外它還可以將網(wǎng)絡(luò)流量信息保存下來(lái),以便在之后需要時(shí)再顯示出來(lái)。

在網(wǎng)站上可以下載到最新的EtherApe源碼包。

下面以Ethereal 0.8.2為例,講述如何安裝EtherApe(使用的操作系統(tǒng)是Red Hat 8.0)。

首先下載最新的源碼包并將其解壓縮,代碼如下:

# cp etherape-0.8.2.tar.gz /usr/local/src/

# cd /usr/local/src/

# tar xzvf etherape-0.8.2.tar.gz

EtherApe使用的是GNOME這一圖形用戶(hù)接口庫(kù)。與Ethereal和Tcpdump一樣,它也使用pcap庫(kù)(libpcap)對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行截獲和過(guò)濾。在編譯EtherApe之前,應(yīng)先確定所需的這些庫(kù)已經(jīng)安裝好,因?yàn)檫@是編譯EtherApe時(shí)所必需的。如果這些庫(kù)已經(jīng)安裝,就可以執(zhí)行下面的命令來(lái)編譯并安裝EtherApe:

# cd etherape-0.8.2

# ./configure

# make

# make install

用EtherApe分析網(wǎng)絡(luò)流量

當(dāng)編譯并安裝好EtherApe后,就可以執(zhí)行“etherape”命令來(lái)啟動(dòng)EtherApe。當(dāng)用EtherApe截獲在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包時(shí),也需要先為其指定過(guò)濾規(guī)則,否則EthreApe將捕獲網(wǎng)絡(luò)中的所有數(shù)據(jù)包。單擊工具欄上的“Pref.”按鈕,打開(kāi)“Preferences”對(duì)話(huà)框,在該對(duì)話(huà)框中的“Capture”屬性頁(yè)中,可以找到用于設(shè)置過(guò)濾規(guī)則的“Capture filter”下拉框。由于采用的都是pcap庫(kù),因此EtherApe過(guò)濾規(guī)則的設(shè)置與Tcpdump和Ethereal是相同的。

設(shè)置好過(guò)濾規(guī)則后,單擊工具欄上的“Start”按鈕,就可以開(kāi)始對(duì)網(wǎng)絡(luò)中感興趣的數(shù)據(jù)包進(jìn)行嗅探。EhterApe圖形化地顯

示網(wǎng)絡(luò)流量,圖5是當(dāng)EtherApe處于Ethernet模式下時(shí)的網(wǎng)絡(luò)流量圖。

EtherApe提供了Token Ring、FDDI、Ethernet、IP和TCP五種監(jiān)聽(tīng)模式。當(dāng)處于Ethernet模式下時(shí),EtherApe會(huì)截獲所有符合過(guò)濾規(guī)則的以太網(wǎng)數(shù)據(jù)包,但有時(shí)網(wǎng)絡(luò)管理員可能只對(duì)IP數(shù)據(jù)包感興趣,這時(shí)可以將EtherApe切換到IP模式。

單擊“Capture”菜單,選擇“Mode”菜單項(xiàng),然后再選擇相應(yīng)的模式,就可以完成模式之間的切換。

圖6是當(dāng)EhterApe處于IP模式下時(shí)的網(wǎng)絡(luò)流量圖。

EtherApe能夠以圖形的方式顯示網(wǎng)絡(luò)流量。用戶(hù)看到的是一個(gè)很直觀的用于表示網(wǎng)絡(luò)上各主機(jī)間流量大小的圖,而不是單個(gè)的數(shù)據(jù)包,因而更容易從整體上把握整個(gè)網(wǎng)絡(luò)的運(yùn)行狀況,在定位網(wǎng)絡(luò)故障時(shí)相對(duì)來(lái)說(shuō)也變得更加容易。

端口號(hào)

TCP協(xié)議支持

協(xié)議名稱(chēng) TCP端口號(hào) 協(xié)議名稱(chēng)解釋

ACAP 674

AIM 5190

BEEP 10288

CAST 4224

CMP 829

COPS 3288

PKTCABLE_COPS 2126

PKTCABLE_MM_COPS 3918

DAAP 3689

DHCPFO 519

DIAMETER 3868

DISTCC 3632

DLSW 2065

NP 20000

NS 53

DNS 5353

澳門(mén)特別行政區(qū)身份證明局 548

斷點(diǎn)續(xù)傳DATA 20

FTP 21

GIFT 1213

CS 1720

HTTP 80

PROXY_HTTP 3128

PROXY_ADMIN_HTTP 3132

HKP 11371

DAAP 3689

SSDP 1900

IB 3050

ICAP 1344

IMAP 143

IRC 6667

ISAKMP 500

JABBER 5222

KERBEROS 88

LAPLINK 1547

LDAP 389

GLOBALCAT_LDAP 3268

LDP 646

PRINTER 515

MBTCP 502

MSNMS 1863

MSRP 0

MySQL 3306

NBSS 139

CIFS 445

網(wǎng)絡(luò)控制程式 524

NDMP 10000

PA 0x0d44

BROKER 0x0bc6

SRS 0x0bca

ENS 0x0bc8

RMS 0x0bcb

Notify_LISTENER 0x0bc9

NETSYNC 5253

NNTP 119

NTP 123

POP 110

PPTP 1723

PVFS2 3334

RMI 1099

RSH 514

rsync 873

RTSP 554

SIP 5060

SKINNY 2000

SLSK_1 2234

SLSK_2 5534

SLSK_3 2240

SMRSE 4321

SMTP 25

SNMP 161

SNMP_TRAP 162

SMUX 199

SOCKS 1080

SRVLOC 427

SSH 22

SSL 443

SSL_LDAP 636

SSL_IMAP 993

SSL_POP 995

STUN 3478

TACACS 49

TELNET 23

TNS 1521

TPKT 102

X11 6000

X11_2 6001

X11_3 6002

XOT 1998

YHOO 5050

YMSG 23

YMSG_2 25

YMSG_3 5050

ZEBRA 2600

NINEPORT 564

ajp13 8009

ax4000 3357

BGP 179

COPS 3288

DCM 104

DHCPFO 519 desegmentation of DHCP failover over TCP

distcc 3632

ECHO 7

edonkey 4661/4662/4663

ENIP_ENCAP_PORT 44818 EtherNet/IP located on port 44818

etheric 1806/10002

giop 0

GNUTELLA 6346

http_alternate_tcp_port 未知

Ipdc 6668

ISNS 3205

MSMMS 1755

msdp 639

MSNMS 1863

msrp 0

Pgsq

Rlogin 513

Rpc 111

rtsp 未知

Sigcomp 5555/6666

synergy 24800

tds 1433/2433

uma 0

vnc 5901

一共129=94+35種

UDP協(xié)議支持

協(xié)議名稱(chēng) UDP端口號(hào) 協(xié)議名稱(chēng)解釋

3GA11 699 3com Network Jack

5264:Packets to Managementstation

5265:Packets to Switch

ACTRACE 2428 Port used for Mobile IP based Tunneling Protocol (A11)

T_AODV 654

ARMAGETRONAD 4534

MASTER 4533

ADP 8200

PIM_RP_DISC 496

BFD_CONTROL 3784

BOOTPS 67

BOOTPC 68

PHA 8116

CUPS 631

DDTP 1052

DHCPV6_DOWNSTREAM 546

DHCPV6_UPSTREAM 547

DLSW 2067

DNP 20000

DNS 53

MDNS 5353

RAS1 1718

RAS2 1719

HSRP 1985

SSDP 1900

IAPP 2313

ICP 3130

ICQ 4000

IPX 213

ISAKMP 500

KERBEROS 88

KRB4 750

KPASSWD 464

L2TP 1701

LAPLINK 1547

CLDAP 389

LDP 646

LLC1 12000

LLC2 12001

LLC3 12002

LLC4 12003

LLC5 12004

LMP_DEFAULT 701

MIP 434

MPLS_ECHO 3503

MSPROXY 1745

NBNS 137

NBDGM 138

網(wǎng)絡(luò)控制程式 524

NETFLOW 2055

TPCP 3121

NTP 123

OLSR 698

RADIUS 1645

RADIUS_NEW 1812

RADACCT 1646

RADACCT_NEW 1813

RIP 520

RIPNG 521

RMCP 623

RMCP_SECURE 664

RX_LOW 7000

RX_HIGH 7009

RX_AFS_BACKUPS 7021

思愛(ài)普 9875

SEBEK 1101

SFLOW 6343

SIP 5060

SLIMP3_V1 1069

SLIMP3_V2 3483

SNMP 161

SNMP_TRAP 162

SRVLOC 427

STUN 3478

SYSLOG 514

TACACS 49

TEREDO 3544

TFTP 69

時(shí)間 37

TIMED 525

TZSP 0x9090

VINES 573

WSP 9200

WTP_WSP 9201

WTLS_WSP 9202

WTLS_WTP_WSP 9203

WSP_PUSH 2948

WTLS_WSP_PUSH 2949

WCCP 2048

WHO 513

XDMCP 177

XYPLEX 173

NJACK1 5264

NJACK2 5265

ASAP 3863

AX4000 3357

bvlc 0xBAC0

CPFI 5000

cpfi_ttot 5001

dis 3000

ECHO 7

edonkey 4665

edonkey 4672

ENIP_ENCAP 44818

ENIP_IO 2222

IAX2 4569

udpencap 4500

IPVS_SYNCD 8848

ISNS 3205

KINK 57203

lwapp 12220/12222/12223

manolito 41170

MSMMS 1755

udp_encap_ucast_port 3055 Udp port for UDP encapsulation

udp_encap_mcast_port 3056

PKTC_PORT 1293

PKTC_MTAFQDN_PORT 2246

EVENT_PORT_PTP 319

GENERAL_PORT_PTP 320

radius 1645/1646/1812/1813

Rpc 111

SigCompUDPPort1 5555

SigCompUDPPort2 6666

Rdt 6970

rmt-alc 未知 從配置文件中讀取

SSCOP 未知 從配置文件中讀取

T38 6004

quakeworldServerPort 27500

quakeServerPort 26000

quake2ServerPort 27910

quake3_server_port 27960-27963

quake3_master_port 27965-27968

一共137=90+47種

IP協(xié)議支持

協(xié)議名稱(chēng) IP端口號(hào) 協(xié)議名稱(chēng)解釋

AX4000 173 AX/4000 Testblock - non 互聯(lián)網(wǎng)號(hào)碼分配局

TP 29 ISO Transport Protocol Class 4

DCCP 33 Sequential Exchange Protocol(和標(biāo)準(zhǔn)的不一樣)

EIGRP 88

EtherIP 97 Ethernet-within-IP Encapsulation

GRE 47 General Routing Encapsulation

ICMPV6 58 ICMP for IPv6

IGMP 2

IGRP 9 any private interior gateway(used by 思科 for their IGRP)

IPIP 4 IP in IP (encapsulation)

ICMP 1

AH 51 Authentication Header

ESP 50 Encap Security Payload

IPCOMP 108 IP Payload Compression Protocol

IPV6 41

L2TP 115 Layer Two Tunneling Protocol

MIPV6_OLD 62 CFTP 這個(gè)和標(biāo)準(zhǔn)不一致――Mobile IPv6

MIPV6 135 Mobility Header ―― Mobile IPv6

NCS_HEARTBEAT 224 Novell NCS Heartbeat -

http://support.novell.com/cgi-bin/search/searchtid.cgi?/10071158.HTML

NARP 54 NBMA Address resolution protocol - RFC1735

OSPF 89

PGM 113 PGM Reliable Transport Protocol

PIM 103 Protocol Independent Multicast

RSVP 46

SCTP 132 Stream Control Transmission Protocol

TCP 6

UDP 17

UDPLITE 136 UDPLite

VINES 83 Vines over raw IP

VRRP 112 Virtual Router Redundancy Protocol

一共30種

參考資料 >

生活家百科家居網(wǎng)