Libnet adalah API untuk membantu konstruksi dan injeksi paket jaringan. Ini menyediakan kerangka kerja portabel untuk penulisan dan penanganan paket jaringan tingkat rendah (gunakan libnet bersama dengan libpcap dan Anda dapat menulis beberapa hal yang sangat keren). Libnet mencakup pembuatan paket pada lapisan IP dan lapisan tautan serta sejumlah fungsi tambahan dan pelengkap.
Libnet sangat berguna untuk menulis alat jaringan dan kode pengujian jaringan. Beberapa proyek, tersedia di Debian/Ubuntu dan OpenBSD, yang menggunakan libnet adalah:
CATATAN: Kode lama yang ditulis untuk libnet-1.0.x sayangnya tidak kompatibel dengan libnet-1.1.x dan yang lebih baru.
Lihat Panduan Migrasi untuk bantuan porting.
Libnet diinstal sebagai perpustakaan dan sekumpulan file yang disertakan. File penyertaan utama yang akan digunakan dalam program Anda adalah:
#include <libnet.h>
Untuk mendapatkan jalur pencarian yang benar ke file header dan perpustakaan, gunakan alat pkg-config
standar ( libnet-config
lama tidak digunakan lagi):
$ pkg-config --libs --static --cflags libnet
-I/usr/local/include -L/usr/local/lib -lnet
Jalur awalan /usr/local/
yang ditampilkan di sini hanyalah default. Gunakan skrip configure
untuk memilih awalan yang berbeda saat memasang libnet.
Untuk proyek berbasis autotools GNU, gunakan yang berikut ini configure.ac
:
# Check for required libraries
PKG_CHECK_MODULES([libnet], [libnet >= 1.2])
dan di Makefile.am
Anda:
proggy_CFLAGS = $(libnet_CFLAGS)
proggy_LDADD = $(libnet_LIBS)
Dokumen online tersedia di https://codedocs.xyz/libnet/libnet/. Lihat halaman manual dan contoh kode pengujian untuk informasi lebih lanjut.
Pertama unduh rilis terbaru dari GitHub. Libnet menggunakan sistem konfigurasi dan pembangunan GNU. File tarball dan zip rilis dikirimkan dengan skrip configure
bawaan:
$ tar xf libnet-x.y.z.tar.gz
$ cd libnet-x.y.z/
$ ./configure && make
$ sudo make install
Untuk membuat daftar opsi yang tersedia, ketik ./configure --help
Saat membangun dari GIT, gunakan ./autogen.sh untuk membuat skrip configure
. Untuk melakukan ini, Anda memerlukan rangkaian lengkap autotool GNU: autoconf (>=2.69), automake (>=1.14), libtool (>=2.4.2).
Cara menginstal dependensi bervariasi menurut sistem, tetapi pada banyak sistem turunan Debian, apt
dapat digunakan:
$ sudo apt install autoconf automake libtool
$ ./autogen.sh
$ ./configure && make
$ sudo make install
Libnet tersedia di Conan Center. Untuk menggunakannya, tambahkan libnet/1.2
ke conanfile.txt
Anda
Pertama, bangun dev. wadah:
$ cd .devcontainer
$ docker build -t libnet-builder .
Kemudian kompilasi libnet dengan buruh pelabuhan:
$ cd ..
$ docker run -it --rm -v $(pwd):$(pwd) --workdir=$(pwd) libnet-builder
$ ./autogen.sh # If you've cloned from GitHub
$ ./configure
$ make
Menjalankan tes di dev. wadah (atas):
$ ./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
============================================================================
Catatan: di Linux pengujian dijalankan di namespace jaringan terpisah (menggunakan
unshare
), jadi tidak diperlukan akses root (sudo), tetapi di sistem lain Anda mungkin harus menjadi root, atau harus memperbaiki kemampuan atau izin.
Untuk membuat dokumentasi (opsional), Anda memerlukan doxygen dan pod2man:
$ sudo apt install doxygen
$ sudo apt install pod2man || sudo apt install perl
Untuk grafik yang rapi dalam dokumentasi HTML, instal juga graphviz. Ada juga dokumen versi PDF, untuk membuatnya Anda memerlukan beberapa paket lagi:
$ sudo apt install texlive-extra-utils texlive-latex-extra
texlive-fonts-recommended latex-xcolor
texlive-font-utils
Untuk dokumen Microsoft CHM Anda memerlukan Lokakarya Bantuan HTML, yang merupakan bagian dari Visual Studio: http://go.microsoft.com/fwlink/p/?linkid=154968, pada sistem UNIX dan GNU/Linux, lihat chmcmd
, yaitu tersedia di suite FreePascal:
$ sudo apt install fp-utils-3.0.4
Libnet digunakan secara luas, namun sudah lama tidak dipelihara dan pembuatnya tidak dapat dihubungi. Versi ini merupakan hasil fork dari kandidat rilis 1.1.3 dari packetfactory.net, bug diperbaiki, dikembangkan, dan dirilis ulang.
Gunakan masalah GitHub dan fitur permintaan tarik untuk pertanyaan dan patch:
http://github.com/libnet/libnet
Beberapa dokumen lama tersedia di:
http://packetfactory.openwall.net/projects/libnet/index.html