迷途書(shū)童

          敏感、勤學(xué)、多思
          隨筆 - 77, 文章 - 4, 評(píng)論 - 86, 引用 - 0
          數(shù)據(jù)加載中……

          Ethereal抓包實(shí)時(shí)分析可行性研究

          Ethereal是一個(gè)功能強(qiáng)大的抓包工具,它提供的GUI工具能將經(jīng)過(guò)網(wǎng)卡的信令捕獲并實(shí)時(shí)顯示,但是在實(shí)際應(yīng)用中,我們還可能要對(duì)捕獲的日志進(jìn)行分析,以獲得自己關(guān)心的信令的統(tǒng)計(jì)結(jié)果,但是這樣就面臨著以下幾個(gè)問(wèn)題:
          1. 當(dāng)Ethereal自身提供的簡(jiǎn)單統(tǒng)計(jì)功能不能滿足需求時(shí),我們?cè)撛趺崔k?
          2. Ethereal的GUI工具生成的日志是它專有的libpcap格式,不適合人類閱讀,我們?cè)撛趺捶治鏊?
          本文針對(duì)上述問(wèn)題提供了一整套的解決方案。

          一. 用Ethereal實(shí)時(shí)捕獲信令。

          Ethereal提供了從命令行定制啟動(dòng)的方案。我們可以利用這個(gè)特點(diǎn)將capture file輸出到指定的目錄,這個(gè)capture file將被Ethereal實(shí)時(shí)更新。
          下面是我寫(xiě)的一個(gè)windows bat文件,用該文件能做到最簡(jiǎn)單地啟動(dòng)Ethereal截包,不用用戶學(xué)習(xí)怎樣配置Ethereal。

          …………………………………………………………………………………………………………
          rem @echo off
          set ETHEREAL_HOME="D:\Program Files\Ethereal\ethereal.exe"
          set NETWORK_CARD="\Device\NPF_{D239E06D-D86E-4CFC-A360-0D74CDD21CAE}"
          set ETHEREAL_OPT=-i %NETWORK_CARD%
          set ETHEREAL_OPT=%ETHEREAL_OPT% -klSQ
          set FILTER_STR="port 6000 or port 6001 or port 6002 or port 6003 or port 6004 or port 6005 or port 6006 or port 6007 or port 6008"
          rem set ETHEREAL_OPT=%ETHEREAL_OPT% -f %FILTER_STR%
          set ETHEREAL_OPT=%ETHEREAL_OPT% -o capture.real_time_update:TRUE -o capture.auto_scroll:TRUE -o capture.show_info:FALSE -o print.format:text -o print.destination:file -o print.file:ethereal.out
          rem -a filesize:1000 files:5 -b filesize:1000 files:5
          call %ETHEREAL_HOME% %ETHEREAL_OPT% -w c:\ethereal.out
          …………………………………………………………………………………………………………
          將上面這段script存為bat文件后,設(shè)置好ETHEREAL_HOME和網(wǎng)卡即可啟動(dòng)Ethereal截包。

          二. 實(shí)時(shí)分析Ethereal的中間人實(shí)現(xiàn)。

          “計(jì)算機(jī)科學(xué)中的所有問(wèn)題都能通過(guò)中間人的方式解決?!边@是精通EJB中強(qiáng)調(diào)了很多次的名言。
          在上節(jié)所示的腳本中我們將Ethereal的存放日志的文件放在了“c:\ethereal.out”目錄下,這個(gè)文件能被Ethereal實(shí)時(shí)更新,但是它的內(nèi)容卻是不可讀的,我們可用Ethereal提供的Tethereal工具將此文件轉(zhuǎn)換為適合人類閱讀的文本。但是這個(gè)工具僅能將標(biāo)準(zhǔn)的capture file解析成可讀文本并在標(biāo)準(zhǔn)輸出設(shè)備顯示(一般為顯示器),沒(méi)有找到將其另存為文本的方法,我們也不需要此方法。可以用java.lang.Runtime.exec()方法執(zhí)行“tethereal -r infile.cap -V”,獲得這個(gè)進(jìn)程的對(duì)象后我們可以得到這個(gè)進(jìn)程對(duì)象的輸出流對(duì)象,接下來(lái)我們可以從這個(gè)輸出流中讀出結(jié)果進(jìn)行分析。

          三. 得到實(shí)時(shí)的統(tǒng)計(jì)結(jié)果
          可以對(duì)從輸出流中得到的可讀結(jié)果進(jìn)行分析,獲得自己想要的統(tǒng)計(jì)結(jié)果。我們可以用一個(gè)線程以一定的時(shí)間間隔刷新此輸出流,已達(dá)到用戶認(rèn)為的實(shí)時(shí)分析的效果。

          參考:
          http://www.ethereal.com
          java doc
          ?
          ?

          后來(lái)想到的更好的方案:

          這種方式有一個(gè)顯著的缺點(diǎn),如果用戶截包時(shí)間的變長(zhǎng),ethereal保存log的文件越來(lái)越大,將導(dǎo)致每次刷新輸出流越來(lái)越耗資源,最后將導(dǎo)致工具無(wú)法使用。

          新的解決方案就是用ethereal的命令行版本,tethereal就可以完美避免類似問(wèn)題。

          用java的runtime.exec()調(diào)用此腳本:

          -------------------

          set TETHEREAL_HOME="D:\Program Files\Ethereal\tethereal.exe"
          rem call cmd /k %TETHEREAL_HOME% -r c:\ethereal.out -R tcp -T text -V
          call cmd /k %TETHEREAL_HOME% -r c:\ethereal.out -T text -V

          ----------------

          ethereal每截到一個(gè)數(shù)據(jù)包,便會(huì)將次包送給輸出流。這樣就能真正做到實(shí)時(shí)分析了。

          posted on 2006-05-06 15:55 迷途書(shū)童 閱讀(7297) 評(píng)論(5)  編輯  收藏 所屬分類: java應(yīng)用

          評(píng)論

          # re: Ethereal抓包實(shí)時(shí)分析可行性研究[未登錄](méi)  回復(fù)  更多評(píng)論   

          shenme dong xi a,kan bu ming bai ya
          2007-06-26 20:20 | yang

          # re: Ethereal抓包實(shí)時(shí)分析可行性研究  回復(fù)  更多評(píng)論   

          很經(jīng)典的使用范例,支持,繼續(xù)啊,最好,再講講Java的部分,說(shuō)的再詳細(xì)點(diǎn)就好了
          2008-05-29 14:52 | useway

          # re: Ethereal抓包實(shí)時(shí)分析可行性研究  回復(fù)  更多評(píng)論   

          一樓的,這個(gè)文章寫(xiě)的那么清楚,你都看不懂,看來(lái)是有點(diǎn)笨。
          給摟主一個(gè)建議,可以用-a參數(shù),將文件大小限定。
          2008-05-29 14:58 | useway

          # re: Ethereal抓包實(shí)時(shí)分析可行性研究[未登錄](méi)  回復(fù)  更多評(píng)論   

          這個(gè)確實(shí)很有用,我也是到了java部分,不知道怎么做.請(qǐng)問(wèn)樓主可以詳細(xì)解釋嗎?或者也給個(gè)代碼。
          2008-10-27 16:03 | ben

          # re: Ethereal抓包實(shí)時(shí)分析可行性研究[未登錄](méi)  回復(fù)  更多評(píng)論   

          經(jīng)過(guò)運(yùn)行,并不能實(shí)現(xiàn)實(shí)時(shí)效果。調(diào)用第二個(gè)腳本,只能獲得調(diào)用腳本時(shí)獲得的包信息,運(yùn)行一段時(shí)間后,新來(lái)的包還是不能被解釋,而用重新調(diào)用此腳本才能獲得內(nèi)容
          2008-11-24 10:40 | ben
          主站蜘蛛池模板: 上饶市| 阿鲁科尔沁旗| 宕昌县| 台东市| 冀州市| 拜城县| 明溪县| 鲁甸县| 托里县| 景谷| 长春市| 石家庄市| 南丹县| 资阳市| 平昌县| 乐安县| 乌拉特中旗| 巴彦淖尔市| 本溪市| 手机| 县级市| 龙海市| 乌拉特前旗| 安福县| 白银市| 余干县| 秀山| 江陵县| 普兰县| 苏尼特右旗| 宁南县| 九龙城区| 安阳县| 绿春县| 玉屏| 肃北| 张家口市| 林口县| 黄山市| 东丰县| 尚志市|