linux中有l(wèi)ibpcap庫;libpcap庫是一個網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫,提供了一個API,用于直接從Unix衍生操作系統(tǒng)的數(shù)據(jù)鏈路層捕獲數(shù)據(jù)包,libpcap庫被流行的數(shù)據(jù)包捕獲應(yīng)用程序使用,使它們能夠在幾乎任何風(fēng)格的Unix上運行。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux有l(wèi)ibpcap庫
概述
libpcap 是一個網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫,功能非常強大,Linux 下著名的 tcpdump 就是以它為基礎(chǔ)的。
Libpcap是一個開源C庫,它提供了一個API,用于直接從Unix衍生操作系統(tǒng)的數(shù)據(jù)鏈路層捕獲數(shù)據(jù)包。它被流行的數(shù)據(jù)包捕獲應(yīng)用程序(如tcpdump和snort)使用,使它們能夠在幾乎任何風(fēng)格的Unix上運行。
libpcap主要的作用
1)捕獲各種數(shù)據(jù)包,列如:網(wǎng)絡(luò)流量統(tǒng)計。
2)過濾網(wǎng)絡(luò)數(shù)據(jù)包,列如:過濾掉本地上的一些數(shù)據(jù),類似防火墻。
3)分析網(wǎng)絡(luò)數(shù)據(jù)包,列如:分析網(wǎng)絡(luò)協(xié)議,數(shù)據(jù)的采集。
4)存儲網(wǎng)絡(luò)數(shù)據(jù)包,列如:保存捕獲的數(shù)據(jù)以為將來進行分析。
libpcap 的安裝
利用 libpcap 函數(shù)庫開發(fā)應(yīng)用程序的基本步驟:
1、打開網(wǎng)絡(luò)設(shè)備
2、設(shè)置過濾規(guī)則
3、捕獲數(shù)據(jù)
4、關(guān)閉網(wǎng)絡(luò)設(shè)備
libpcap 的抓包框架
-
pcap_lookupdev():函數(shù)用于查找網(wǎng)絡(luò)設(shè)備,返回可被 pcap_open_live() 函數(shù)調(diào)用的網(wǎng)絡(luò)設(shè)備名指針。
-
pcap_lookupnet():函數(shù)獲得指定網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)號和掩碼。
-
pcap_open_live(): 函數(shù)用于打開網(wǎng)絡(luò)設(shè)備,并且返回用于捕獲網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)據(jù)包捕獲描述字。對于此網(wǎng)絡(luò)設(shè)備的操作都要基于此網(wǎng)絡(luò)設(shè)備描述字。
-
pcap_compile(): 函數(shù)用于將用戶制定的過濾策略編譯到過濾程序中。
-
pcap_setfilter():函數(shù)用于設(shè)置過濾器。
-
pcap_loop():函數(shù) pcap_dispatch() 函數(shù)用于捕獲數(shù)據(jù)包,捕獲后還可以進行處理,此外 pcap_next() 和 pcap_next_ex() 兩個函數(shù)也可以用來捕獲數(shù)據(jù)包。
-
pcap_close():函數(shù)用于關(guān)閉網(wǎng)絡(luò)設(shè)備,釋放資源。
推薦學(xué)習(xí):Linux視頻教程