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/
ที่แสดงที่นี่เป็นเพียงค่าดีฟอลต์เท่านั้น ใช้สคริปต์ configure
เพื่อเลือกคำนำหน้าอื่นเมื่อติดตั้ง libnet
สำหรับโปรเจ็กต์ที่ใช้ 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 tarballs และไฟล์ 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 มีอยู่ใน Conan Center หากต้องการใช้ ให้เพิ่ม libnet/1.2
ลงใน conanfile.txt
ของคุณ
ก่อนอื่นให้สร้าง dev คอนเทนเนอร์:
$ cd .devcontainer
$ docker build -t libnet-builder .
จากนั้นคอมไพล์ libnet ด้วย docker:
$ cd ..
$ docker run -it --rm -v $(pwd):$(pwd) --workdir=$(pwd) libnet-builder
$ ./autogen.sh # If you've cloned from GitHub
$ ./configure
$ make
กำลังรันการทดสอบใน dev คอนเทนเนอร์ (ด้านบน):
$ ./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
) ดังนั้นจึงไม่จำเป็นต้องเข้าถึงรูท (sudo) แต่ในระบบอื่นคุณอาจต้องรูทหรือต้องแก้ไขความสามารถหรือการอนุญาต
ในการสร้างเอกสาร (ไม่บังคับ) คุณต้องมี 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 มีการใช้กันอย่างแพร่หลาย แต่ไม่ได้รับการบำรุงรักษามาเป็นเวลานานและไม่สามารถเข้าถึงผู้เขียนได้ เวอร์ชันนี้แยกมาจากตัวเลือกการเปิดตัว 1.1.3 จาก packetfactory.net แก้ไขข้อผิดพลาด พัฒนา และเผยแพร่อีกครั้ง
ใช้ปัญหา GitHub และฟีเจอร์คำขอดึงสำหรับคำถามและแพตช์:
http://github.com/libnet/libnet
เอกสารเก่าบางส่วนมีอยู่ที่:
http://packetfactory.openwall.net/projects/libnet/index.html