pcap檔案解析 pcap檔案頭與包檔案頭(一)

2021-06-21 01:24:46 字數 2490 閱讀 1311

前段時間接到乙個公司關於解析pacp檔案的培訓(我是被培訓的),在完成了一部分的功能後決定把一些關於pcap檔案的了解記錄到部落格中。

在開始讀取pcap檔案之前,先讓我們來看看pcap檔案的大概結構。

如上圖所示在乙個pcap檔案中存在1個pcap檔案頭和多個資料報,其中每個資料報都有自己的頭和包內容。

下面我們先看看pcap檔案頭每個欄位是什麼意思:

magic為檔案識別頭,pcap固定為:0xa1b2c3d4。(4個位元組)

magor version為主版本號(2個位元組)

minor version為次要版本號(2個位元組)

timezone為

當地的標準時間(4個位元組)

sigflags為

時間戳的精度(4個位元組)

snaplen為

最大的儲存長度(4個位元組)

linktype為鏈路型別(4個位元組)

常用型別:

0            bsd loopback devices, except for later openbsd

1            ethernet, and linux loopback devices

6            802.5 token ring

7            arcnet

8            slip

9            ppp

10           fddi

100         llc/snap-encapsulated atm

101         「raw ip」, with no link

102         bsd/os slip

103         bsd/os ppp

104         cisco hdlc

105         802.11

108         later openbsd loopback devices (with the af_value in network byte order)

113         special linux 「cooked」 capture

114         localtalk

資料報頭則依次為:時間戳(秒)、時間戳(微妙)、抓包長度和實際長度,依次各佔4個位元組。

c**:

pcap_header.h

[cpp]view plain

copy

#pragma pack( push, 1)

// 為了保證在windows和linux下都能正常編譯,放棄使用int64或者_int_64

typedef

short

_int16;  

typedef

long

_int32;  

typedef

char

byte;  

// pcap檔案頭

struct

__file_header  

;  // 資料報頭

struct

__pkthdr  

;  #pragma pack( pop)

main.c

[cpp]view plain

copy

#include

#include"pcap_header.h"

#include

#include

#include

intmain()  

fseek( pfile, 0, seek_end);  

long

ifilelen = ftell( pfile);  

fseek( pfile, 0, seek_set);  

byte* pbuffer = (byte*)malloc( ifilelen);  

fread( (void

*)pbuffer, 1, ifilelen, pfile);  

fclose( pfile);  

memcpy( (void

*)&header, (

void

*)(pbuffer)  

, sizeof

(struct

__file_header));  

intiindex = 

sizeof

(struct

__file_header);  

intino = 1;  

while

(iindex <= ifilelen)  

free( pbuffer);  

printf( "成功匯出%d個檔案"

, ino - 1);  

return

1;  

}  

Pcap檔案格式解析

一 24位元組pcap檔案頭 乙個檔案只有乙個 linktype為鏈路層型別,決定資料幀頭結構,其他沒啥用 typedef struct pcapfileheader pcapfileheader t 二 pcap包頭 乙個檔案可以有很多個包 時間戳 typedef struct pcaptime ...

pcap檔案概述

檔案整體結構示意圖 檔案整體結構描述 magic 4b 0x1a 2b 3c 4d 用來標示檔案的開始 major 2b,0 02 00 當前檔案主要的版本號 minor 2b,0 04 00當前檔案次要的版本號 thiszone 4b當地的標準時間 全零 sigfigs 4b時間戳的精度 全零 s...

PCAP檔案格式

一 基本格式 檔案頭 資料報頭 資料報 資料報頭 資料報.二 檔案頭結構體 以下是資料值與鏈路層型別的對應表 0 bsd loopback devices,except for later openbsd 1 ethernet,and linux loopback devices 乙太網型別,大多數...