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 التلقائية، استخدم ما يلي في 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. يتم شحن كرات القطران وملفات 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).
تختلف كيفية تثبيت التبعيات حسب النظام، ولكن في العديد من الأنظمة المشتقة من دبيان، يمكن استخدام 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 .
ثم قم بتجميع 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
)، لذلك لا يلزم الوصول إلى الجذر (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، التي تعد جزءًا من 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