最近要開始作實驗,話說老師的設備實在是很難用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) //關閉網路設備
沒有留言:
張貼留言