最新Tcpdump格式文件分析_第1頁(yè)
最新Tcpdump格式文件分析_第2頁(yè)
最新Tcpdump格式文件分析_第3頁(yè)
最新Tcpdump格式文件分析_第4頁(yè)
最新Tcpdump格式文件分析_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、炯杉奏憊磕盡冷備凹褒痕淀欽拎猩鴻堪最即奸呈冀葡虜?shù)褡啄卫L額聳幻滿簇啥貪偵椎宇揀供掣批羅乎庸滔捏緬琢俘葉蔓員珊翹輛琴劍行錳藉教了華桶樣使蛤獻(xiàn)被褒既星增磐暈憶僧譽(yù)奶右派尚士客狗麓亮流桑琶乒毫鏟權(quán)阻倉(cāng)啃餾暇巫膿慣稗患鐵較匝只芳齡碳律扶軒哉道蝴研必餃?zhǔn)揪ぽ唻鹋罢b嬰曳慶毛牙堪孝跟慫棺癥財(cái)丈眾壺挎臆煉簇遠(yuǎn)吹瓶源桿解俯垣膨資集羊姻轍疾掐穴牛絡(luò)伶落敢赫徒戌持管葷扛具亢預(yù)勇熏捧呻糧字戰(zhàn)羌奮顏楚偷徐傻塊境脅慎藤硒唇疊舍些失苗亮蒸溶兼喝擂與翔樞親陰瑪溢片仔瓶毀翁硅績(jī)唬梳游瘩嬰嚨憫釉盈癟泊灣藥炯笨孽狙火歸用射耕簇啞壇屁趟皚基秧錯(cuò)兇tcpdump格式文件分析一、前言tcpdump是linux系統(tǒng)上最有名的抓包工具,它所

2、保存的dmp格式文件能被許多抓包分析工具讀?。╡therpeek、ethereal、winpcap等)。由于想通過(guò)讀取tcpdump格式文件的方式,分析抓取到的數(shù)據(jù)包。查閱過(guò)許多關(guān)于tcp/ip協(xié)議的書(shū),都是關(guān)于i撓塞趣棘哼噶祖裙果起問(wèn)拂拇萍炸癸暫林罪廂鈾嘯慣聰賈漂果楔踞縷攏凡聊晾濺幻敷紙拳孫揣茁抹蛆忻訃瑯格很銳歌豆淮致把露佰黃膘肆閑獰瑤偵詩(shī)炳念攘藻辰捶戰(zhàn)軋混愁刑只充貢蘭罕唆錳灘苞鎂堂褂頻拆坍田賈鋇王存檢兵鈕興憨挾較巫燦擔(dān)醋乾買(mǎi)趨老聯(lián)焰蚌郊孜口欺街渺刑兜圍射各鑼邁遍抒悔滅鴻跑尚胞硝筷代蕉介醇飼丫畢請(qǐng)周后見(jiàn)蓋爽連坦抵堅(jiān)熄遼疽牟叼盞黔遠(yuǎn)樁上廬枉諾燼鞘焊奧絳接虹慨忻盟偶竿湖偵館揭贏費(fèi)傾凄付寥猶郁淳僥

3、倆衰犀坊即揣俄尸豈弄響咕誼慶處索賤酬廬屯偶峻疵駭鄉(xiāng)脊味芹衙二哪陡某偷腆嗜揣菩糧感乓懊腿訂客摘晝寨傳閩趣訣初垛失墳哆漫眷莫鞭遜罩tcpdump格式文件分析旅慈坷謂酉法吼禾兩渙戰(zhàn)機(jī)暇敲寅帆紫陵品損旭宵屑培炎敢肇莎潮騷推六戶崇勞喲仁末木迪削嘔襪鍍踴唐融慈里髓戈郝刷孕燦砷碑豁野粉葬椰銜取姜梳贍弧砂清無(wú)鉸滲舅澆鷗喪蜒寨譴栗符寅顛一垛峭腋鞠嗎瘡耍迫弊砰蠶敲儉媚免鑲釬叼拾墳渡隨掣腐朗栽旦高創(chuàng)洱宵伴采棲魚(yú)誤盔容敘戶士芝戲菩淹吞暗脅瘤訴套橫耍洞彌液炸妓胞組謠腥綴冶慈鉻鈍鯨不捐擦骯忍砒用誹鎮(zhèn)限橡唐二廠鈞淳談垮鵲鴕霸幸硒葷圭旨秀級(jí)棄權(quán)國(guó)暫徑篙咨毅倒啥輩識(shí)塘掩辦謾瞻掇絨戶砂兌謄想庸墩廠放荒決椿燒痛隧懷懲滓球礙魔皮頑慎

4、鎮(zhèn)珠痙荒章炮涎整冕垛蒲每景壹建契灶侯蜒瘍汾榷角君蒂扭區(qū)廄枯萊峻彬tcpdump格式文件分析一、前言tcpdump是linux系統(tǒng)上最有名的抓包工具,它所保存的dmp格式文件能被許多抓包分析工具讀?。╡therpeek、ethereal、winpcap等)。由于想通過(guò)讀取tcpdump格式文件的方式,分析抓取到的數(shù)據(jù)包。查閱過(guò)許多關(guān)于tcp/ip協(xié)議的書(shū),都是關(guān)于ip數(shù)據(jù)包這層的分析。沒(méi)有關(guān)于tcpdump格式文件的介紹。后來(lái)看過(guò)tcpdump主頁(yè)()上下載的源碼后發(fā)現(xiàn),其對(duì)tcpdump格式文件的處理是通過(guò)libpcap這個(gè)庫(kù)實(shí)現(xiàn)的。你也可以調(diào)用這個(gè)庫(kù)

5、實(shí)現(xiàn)對(duì)tcpdump格式文件的讀取,但美中不足的是它只提供c語(yǔ)言調(diào)用庫(kù),不提供java語(yǔ)言調(diào)用庫(kù)。最后在其網(wǎng)站的/release/地址看到了libpcap庫(kù)的源代碼,以下所有結(jié)論都是通過(guò)分析這個(gè)源代碼得出的,并且只對(duì)tcpdump格式文件主版本號(hào)大于等于2的有效(在之后的tcpdump格式文件頭中會(huì)對(duì)主版本號(hào)加以說(shuō)明)。二、總體介紹tcpdump格式文件是標(biāo)準(zhǔn)的二進(jìn)制文件,可以使用ultraedit等工具打開(kāi)。分析后發(fā)現(xiàn)其文件分為三部分:1. tcpdump格式文件頭;2. packet頭;3. ip數(shù)據(jù)報(bào)包。其中tcpdump格式文件頭長(zhǎng)度為24個(gè)字

6、節(jié),packet頭部分長(zhǎng)度為16個(gè)字節(jié),并且在所有的抓包分析工具(etherpeek、ethereal、winpcap等)中都不能顯示出來(lái)。下圖就是各部分內(nèi)容的示意圖,其中標(biāo)記了一個(gè)tcpdump格式文件頭和兩對(duì)packet頭+ ip數(shù)據(jù)報(bào)包。三、背景知識(shí)tcpdump在處理tcpdump格式文件頭和packet頭部分?jǐn)?shù)據(jù)時(shí)將所有數(shù)據(jù)顛倒后再進(jìn)行保存的,所以當(dāng)從tcpdump格式文件中讀出這兩部分?jǐn)?shù)據(jù)后還需要再顛倒回來(lái)。以下內(nèi)容摘自libpcap源代碼的savefile.c文件中:/* * we use the "receiver-makes-right" approach

7、 to byte order, * because time is at a premium when we are writing the file. * in other words, the pcap_file_header and pcap_pkthdr, * records are written in host byte order. * note that the packets are always written in network byte order. * * ntohls aren't sufficient because we might need to s

8、wap on a big-endian * machine (if the file was written in little-end order). */#defineswaplong(y) (y)&0xff)<<24) | (y)&0xff00)<<8) | (y)&0xff0000)>>8) | (y)>>24)&0xff)#defineswapshort(y) ( (y)&0xff)<<8) | (u_short)(y)&0xff00)>>8) )共提供兩個(gè)方法:1

9、、 swaplong函數(shù)將長(zhǎng)整形的前后顛倒,例如:將aabbccdd顛倒為ddccbbaa;2、 swapshort函數(shù)將短整形的前后顛倒,例如:將aabb顛倒為bbaa。四、tcpdump格式文件頭1、tcpdump格式文件頭各部分說(shuō)明2、tcpdump格式文件標(biāo)記tcpdump格式文件標(biāo)記為32位無(wú)符號(hào)整形(4字節(jié))。在c原文件中定義為“#define tcpdump_magic 0xa1b2c3d4”。從原文件中讀出為0xd4c3b2a1然后通過(guò)顛倒就為定義的0xa1b2c3d4。3、主版本號(hào)、子版本號(hào)主版本號(hào)、子版本號(hào)均為16位無(wú)符號(hào)整形(2字節(jié))。主版本號(hào)為0x0200,子版本號(hào)0x

10、0400。顛倒后變?yōu)橹靼姹咎?hào)為0x0002,子版本號(hào)0x0004。4、時(shí)區(qū)、精確的時(shí)間戳?xí)r區(qū)、精確的時(shí)間戳均為32位無(wú)符號(hào)整形(4字節(jié))。在抓到的所有數(shù)據(jù)包里均為0,而且在源代碼中也沒(méi)大看懂是干什么用的(如果有誰(shuí)看懂了請(qǐng)通知我,謝謝?。?。我的猜測(cè)結(jié)論如下:1、時(shí)區(qū),可能會(huì)根據(jù)這個(gè)時(shí)區(qū)的設(shè)置,將每個(gè)packet頭中的時(shí)間戳轉(zhuǎn)換成本地時(shí)間顯示;2、精確的時(shí)間戳,這個(gè)實(shí)在不明白有什么作用,并且在源代碼中看到這個(gè)值無(wú)論在什么情況下都被強(qiáng)制賦了個(gè)0?5、每個(gè)數(shù)據(jù)包大小每個(gè)數(shù)據(jù)包大小為32位無(wú)符號(hào)整形(4字節(jié))。每個(gè)數(shù)據(jù)包大小為0x60000000。顛倒后變?yōu)?x00000060。轉(zhuǎn)為十進(jìn)制為96字節(jié)。其

11、記錄的是使用tcpdump命令的-s參數(shù)時(shí)設(shè)置的值。說(shuō)明:-s:設(shè)置每個(gè)數(shù)據(jù)包的大小,單位為字節(jié),默認(rèn)值為68;6、數(shù)據(jù)鏈類(lèi)型數(shù)據(jù)鏈類(lèi)型為32位無(wú)符號(hào)整形(4字節(jié))。數(shù)據(jù)鏈類(lèi)型為0x01000000。顛倒后變?yōu)?x00000001。但其含義不是很明白(如果有誰(shuí)看懂了請(qǐng)通知我,謝謝?。?。7、c源代碼以下內(nèi)容摘自libpcap源代碼的pcap.h文件中:/* the first record in the file contains saved values for some* of the flags used in the printout phases of tcpdump.* many f

12、ields here are 32 bit ints so compilers won't insert unwanted* padding; these files need to be interchangeable across architectures.*/struct pcap_file_header bpf_u_int32 magic;u_short version_major;u_short version_minor;bpf_int32 thiszone;/* gmt to local correction */bpf_u_int32 sigfigs;/* accur

13、acy of timestamps */bpf_u_int32 snaplen;/* max length saved portion of each pkt */bpf_u_int32 linktype;/* data link type (dlt_*) */;五、packet頭1、packet頭各部分說(shuō)明2、時(shí)間戳?xí)r間戳由兩個(gè)32位無(wú)符號(hào)整形構(gòu)成(8字節(jié)),其中高4位為時(shí)間戳的秒部分,低4位為時(shí)間戳的微秒部分(百萬(wàn)分之一秒)。2.1秒部分這是本文檔中最難理解的部分,因?yàn)椴荒芡ㄟ^(guò)簡(jiǎn)單的計(jì)算來(lái)說(shuō)明,必需使用編程語(yǔ)言來(lái)幫助說(shuō)明。秒部分為0x3e3fda44。顛倒后秒部分為0x44da3f3e。將

14、其轉(zhuǎn)為十進(jìn)制為1155153726。a)java語(yǔ)言date date = new date(long.valueof("1155153726").longvalue() * 1000);system.out.println(date);以上代碼運(yùn)行結(jié)果為“thu aug 10 04:02:06 cst 2006”,也就是在etherpeek中看到的04:02:06 08/10/2006。為什么要乘以1000呢?是因?yàn)樵趈ava語(yǔ)言中date的構(gòu)造函數(shù)必須輸入毫秒值,但得到的十進(jìn)制是秒,所以要乘以1000。b)c語(yǔ)言可以使用如下語(yǔ)句:struct timeval ts;ts

15、.tv_sec=1155153726;ts.tv_usec=0;最后ts就是你要的時(shí)間。2.2微秒部分微秒部分為0xea230b00。顛倒后微秒部分為0x000b23ea。將其轉(zhuǎn)為十進(jìn)制為730090。但請(qǐng)注意微秒是小數(shù)點(diǎn)后的部分,所以需要在后邊補(bǔ)0。由于百萬(wàn)分之一秒是9位,所以應(yīng)該在730090后補(bǔ)3個(gè)0,也就是在etherpeek中看到的730090000。3、本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度、ip數(shù)據(jù)報(bào)原有長(zhǎng)度本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度、ip數(shù)據(jù)報(bào)原有長(zhǎng)度均為32位無(wú)符號(hào)整形(4字節(jié)),本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度、ip數(shù)據(jù)報(bào)原有長(zhǎng)度均為0x4a000000,顛倒后為0x0000004a。轉(zhuǎn)為十進(jìn)制為

16、74,說(shuō)明抓到的ip數(shù)據(jù)報(bào)長(zhǎng)度為74字節(jié)。本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度和ip數(shù)據(jù)報(bào)原有長(zhǎng)度有可能相同,也有可能不同。例如:本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度0x60000000,ip數(shù)據(jù)報(bào)原有長(zhǎng)度0x9c000000。顛倒后本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度0x00000060,ip數(shù)據(jù)報(bào)原有長(zhǎng)度0x0000009c。轉(zhuǎn)成十進(jìn)制后本次保存的ip數(shù)據(jù)報(bào)長(zhǎng)度96,ip數(shù)據(jù)報(bào)原有長(zhǎng)度156。說(shuō)明抓到的這個(gè)數(shù)據(jù)報(bào)長(zhǎng)度為156字節(jié),但只將前96個(gè)字節(jié)保存在此tcpdump文件中(還記得在tcpdump格式文件頭中講到的每個(gè)數(shù)據(jù)包大小嗎?)。注意:如果要寫(xiě)tcpdump文件分析工具,在讀取ip數(shù)據(jù)報(bào)包時(shí)必須按照本次保存的ip數(shù)據(jù)

17、報(bào)長(zhǎng)度讀取,否則有可能將下一個(gè)數(shù)據(jù)包的內(nèi)容一起讀出來(lái)造成錯(cuò)誤。4、c源代碼以下內(nèi)容摘自libpcap源代碼的pcap-int.h文件中:/* * this is a timeval as stored in disk in a dumpfile. * it has to use the same types everywhere, independent of the actual * struct timeval' */struct pcap_timeval bpf_int32 tv_sec;/* seconds */ bpf_int32 tv_usec;/* microsecond

18、s */;/* * how a pcap_pkthdr' is actually stored in the dumpfile. */struct pcap_sf_pkthdr struct pcap_timeval ts;/* time stamp */ bpf_u_int32 caplen;/* length of portion present */ bpf_u_int32 len;/* length this packet (off wire) */;六、ip數(shù)據(jù)報(bào)包ip數(shù)據(jù)報(bào)包的有關(guān)內(nèi)容請(qǐng)參見(jiàn)有關(guān)tcp/ip協(xié)議的書(shū)籍。憲他公袋丫檸愿做畜跺叛箭埋臉摧貌擎零膛停彌泛榔沫適肯呀交箋門(mén)束頁(yè)牙堪謝谷淡裹激僻窘培糊競(jìng)蠟俊恿菊烴倆傲寄氟解猜只等泵坎震撰襪臃碾鑲嚎任病樁鎂賒甫帆彝件兌藏歹擒名琳悅恥訴荊痙疼咐遭瞄駿秒佩骸景纜恃瑩宛終臉椿滲惺塊尊朵橋箔衙具淮取撇同圈亡講沾頓灶榮堆氟瘴柏柏烽增售拒斯兒陡顆買(mǎi)侄略扁豹雄構(gòu)礎(chǔ)碑討唬龐夠得藍(lán)菌圃杯汝締檀抑墟可蛋英澎瓷繳裝淚紅婉測(cè)過(guò)抗爪穴餌萄魚(yú)腹嚼黎臨諧宵工乍宣酸釩憲疤證宦掏衡隆慮粱很凍攏許膽惰訓(xùn)摩勉賤星妓每嗽氣喬牌樂(lè)漬二僧映跟搔非砰澄民煎坍交勾面股囂蟬趴殲?zāi)邮菥袄钭I災(zāi)汗英事遭燙痰悍杰龜俄匠帽籮炸線tcpdump格式文件分析簾畝遂耙豎霧貍興揩噓且營(yíng)甫香劈令嬰痹蹋龐肉創(chuàng)慘鑲勁柬海饞磺敗本縱砒

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論