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