pcap文件格式及其大文件切割——C语言
生活随笔
收集整理的這篇文章主要介紹了
pcap文件格式及其大文件切割——C语言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Pcap文件格式以及變量類型的選取
這些有很多前輩已經介紹過了,這里就不贅述了??梢詤⒖记拜厒兊奈恼?#xff0c;這里推薦兩個。https://www.cnblogs.com/caoguoping100/p/3658792.htmlhttps://blog.csdn.net/jackyzhousales/article/details/78032054二、C語言進行文件切割
重點來了,直接上exe以及測試文件(已壓縮完,可直接試用程序。)下載鏈接:鏈接:https://pan.baidu.com/s/1yxswxS1bELxwHfxV9UMN3Q提取碼:hh9i簡單講解一下程序,程序的主要功能就是將較大pcap文件切割成wireshark較容易打開的一個個小文件(小文件數量可以人為確定)。程序主要分為三個部分:(1)計算待切割文件大小(2)切割文件頭(3)切割數據包頭,創建并打開待寫入文件將文件頭、數據包頭和數據寫入程序的較難點就在于怎么記錄每次切割的位置、怎么計算出已經切割和輸入了多少數據。void GetPcapFileData(FILE* Functionfp)函數用于將文件頭切割出來存儲在全局變量中,因為一個pcap大文件只有一個文件頭,我們只需要保存一個文件頭然后將切割出的文件頭分配給每個小文件就可以保證wireshark正確讀取。根據前輩們的研究定義一個結構體(在頭文件中)。void GetPcapIndividualHeader(FILE* tp,FILE* tp2)函數用于將數據包頭和數據切割出來放入tp2指向的文件中。這里需要用結構體解析出數據包頭中描述數據部分大小的值。在我的程序中ph結構體用于存儲數據包頭,存儲數據部分大小的變量是ph.capture_len。主函數部分使用sprintf函數循環創建所需小文件,每次for循環都創建一個新文件,在for循環中使用while循環來執行GetPcapIndividualHeader函數。在執行GetPcapIndividualHeader之前先將切割出的文件頭存進去。SizeofFile/FileNumber是根據文件大小和所需切割的小文件數量計算出的每個小文件大約是多少字節。GetPcapIndividualHeader循環執行完以后,文件偏移指針會指向第一個小文件中最后一個數據包的下一個數據包包頭,這時候的文件偏移指針減去一開始執行while循環時的文件偏移指針的值就是這次while循環切割出的第一個小文件的大小(單位為byte)。循環的結束判斷使用ftell函數獲取待切割文件每次的文件偏移指針位置,如果大于等于SizeofFile,說明已全部切割完成,程序完成。這個程序只是一個簡單的版本,沒有進行用戶優化,也沒有做輸入流的錯誤檢測,所以可能會出現一些錯誤,之后有需要的話可能會做一些優化。但是正常切割應該是可以進行的。如果遇到什么問題或者有什么想法可以通過2772672879@qq.com聯系我。總結
以上是生活随笔為你收集整理的pcap文件格式及其大文件切割——C语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAMES101蒙特卡洛光线追踪及Ass
- 下一篇: .h .c .hh .cc文件