2013年5月17日 星期五

libpcap筆記

最近要開始作實驗,話說老師的設備實在是很難用QQ,需要用到libpcap,只好紀錄一下!
1. libpcap(Packet Capture library):
   |- 封包擷取函式庫,可以擷取網路介面的所有封包
   |- TCPDUMP為Libpcap的基礎上開發的
   |- 主要功能:
      |- 資料封包擷取
      |- 自訂資料封包發送
      |- 流量採集統計
      |- 過濾
2. 擷取流程:
   |- 尋找設備
   |- 打開網路設備
   |- 獲得網路參數
   |- 編譯過濾策略
   |- 設定篩檢程式
   |- 利用callback function來擷取封包
   |- 關閉網路設備
char *pcap_lookupdev(char *errbuf)    //尋找設備

int pcap_lookupnet(char *devic, bpf_u_int32 *netp, bpf_u_int32 *maskp, char*errbuf)    //獲得ip和netmask

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)  //開啟網路設備

int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str, int optimize, bpf_u_int32 netmask)  //指定得規則放到篩檢程式中

int pcap_setfilter(pcap_t *p, struct bpf_program *fp)  //設定一個過濾程式

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)  //開始擷取封包

void call_back(u_char *, const struct pcap_pkthdr *, const u_char *)  //pcap_loop的callback function

u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)  //回傳資料封包的指標

void pcap_close(pcap_t *p)  //關閉網路設備

沒有留言:

張貼留言