Libnet 是一個幫助建立和注入網路封包的 API。它提供了一個用於低階網路封包編寫和處理的可移植框架(將 libnet 與 libpcap 結合使用,您可以編寫一些非常酷的東西)。 Libnet 包括 IP 層和鏈路層的資料包創建以及大量補充和補充功能。
Libnet 非常方便用來編寫網路工具和網路測試程式碼。 Debian/Ubuntu 和 OpenBSD 中使用 libnet 的一些專案包括:
注意:不幸的是,為libnet-1.0.x編寫的舊程式碼與libnet-1.1.x及更高版本不相容。
請參閱遷移指南以取得移植協助。
Libnet 作為一個庫和一組包含文件安裝。程式中使用的主要包含檔案是:
#include <libnet.h>
若要取得頭檔和程式庫檔案的正確搜尋路徑,請使用標準pkg-config
工具(舊的libnet-config
已棄用):
$ pkg-config --libs --static --cflags libnet
-I/usr/local/include -L/usr/local/lib -lnet
此處顯示的前綴路徑/usr/local/
只是預設路徑。安裝 libnet 時使用configure
腳本選擇不同的前綴。
對於基於 GNU autotools 的項目,請在configure.ac
中使用以下內容:
# Check for required libraries
PKG_CHECK_MODULES([libnet], [libnet >= 1.2])
在你的Makefile.am
:
proggy_CFLAGS = $(libnet_CFLAGS)
proggy_LDADD = $(libnet_LIBS)
線上文檔位於 https://codedocs.xyz/libnet/libnet/。有關詳細信息,請參閱手冊頁和範例測試程式碼。
首先從 GitHub 下載最新版本。 Libnet 採用 GNU 配置和建置系統。發布 tarball 和 zip 檔案附帶預先建置的configure
腳本:
$ tar xf libnet-x.y.z.tar.gz
$ cd libnet-x.y.z/
$ ./configure && make
$ sudo make install
若要列出可用選項,請輸入./configure --help
從 GIT 建置時,使用./autogen.sh configure
腳本。為此,您需要全套 GNU 自動工具:autoconf (>=2.69)、automake (>=1.14)、libtool (>=2.4.2)。
如何安裝依賴項因係統而異,但在許多 Debian 派生系統上,可以使用apt
:
$ sudo apt install autoconf automake libtool
$ ./autogen.sh
$ ./configure && make
$ sudo make install
Libnet 在柯南中心可用。要使用,請將libnet/1.2
新增至conanfile.txt
首先建構開發。容器:
$ cd .devcontainer
$ docker build -t libnet-builder .
然後用docker編譯libnet:
$ cd ..
$ docker run -it --rm -v $(pwd):$(pwd) --workdir=$(pwd) libnet-builder
$ ./autogen.sh # If you've cloned from GitHub
$ ./configure
$ make
在開發環境中執行測試容器(上):
$ ./autogen.sh # If you've cloned from GitHub
$ ./configure --enable-tests
$ make check
make check-TESTS
PASS: udld 1 - libnet_udld__checksum_calculation
PASS: udld 2 - libnet_build_udld__pdu_header_only
PASS: udld 3 - libnet_build_udld__tlv_device_id
PASS: udld 4 - libnet_build_udld__tlv_port_id
PASS: udld 5 - libnet_build_udld__tlv_echo
PASS: udld 6 - libnet_build_udld__tlv_message_interval
PASS: udld 7 - libnet_build_udld__tlv_timeout_interval
PASS: udld 8 - libnet_build_udld__tlv_device_name
PASS: udld 9 - libnet_build_udld__tlv_sequence_number
PASS: udld 10 - libnet_build_udld__build_whole_packet_with_checksum
PASS: ethernet 1 - test_libnet_build_ethernet
============================================================================
Testsuite summary for libnet 1.3
============================================================================
# TOTAL: 11
# PASS: 11
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
注意:在 Linux 上,測試在單獨的網路命名空間中運行(使用
unshare
),因此不需要 root (sudo) 存取權限,但在其他系統上,您可能需要成為 root,或必須修正功能或權限。
要建立文件(可選),您需要 doxygen 和 pod2man:
$ sudo apt install doxygen
$ sudo apt install pod2man || sudo apt install perl
為了在 HTML 文件中顯示整齊的圖形,也可以安裝 graphviz。還有一個 PDF 版本的文檔,要建立它,您需要更多的套件:
$ sudo apt install texlive-extra-utils texlive-latex-extra
texlive-fonts-recommended latex-xcolor
texlive-font-utils
對於 Microsoft CHM 文檔,您需要 HTML Help Workshop,它是 Visual Studio 的一部分:http://go.microsoft.com/fwlink/p/?linkid=154968,在 UNIX 和 GNU/Linux 系統上,請參閱chmcmd
,它是FreePascal 套件中可用:
$ sudo apt install fp-utils-3.0.4
Libnet應用廣泛,但長期無人維護,作者也無法聯繫。這個版本是從 packetfactory.net 的 1.1.3 候選版本分叉出來的,修復了錯誤、開發並重新發布。
使用 GitHub 問題和拉取請求功能來解決問題和修補程式:
http://github.com/libnet/libnet
一些舊文檔可在以下位置找到:
http://packetfactory.openwall.net/projects/libnet/index.html