Libnet은 네트워크 패킷의 구성 및 주입을 돕는 API입니다. 이는 낮은 수준의 네트워크 패킷 작성 및 처리를 위한 이식 가능한 프레임워크를 제공합니다(libpcap과 함께 libnet을 사용하면 정말 멋진 내용을 작성할 수 있습니다). Libnet에는 IP 계층과 링크 계층에서의 패킷 생성은 물론 다양한 보충 및 보완 기능이 포함되어 있습니다.
Libnet은 네트워크 도구 및 네트워크 테스트 코드를 작성하는 데 매우 편리합니다. libnet을 사용하여 Debian/Ubuntu 및 OpenBSD에서 사용할 수 있는 일부 프로젝트는 다음과 같습니다.
참고: 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 autotools 전체 제품군인 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은 코난센터에서 이용 가능합니다. 사용하려면 conanfile.txt
에 libnet/1.2
추가하세요.
먼저 개발자를 빌드하세요. 컨테이너:
$ 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
사용)에서 실행되므로 루트(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 문서의 경우 Visual Studio의 일부인 HTML 도움말 워크샵이 필요합니다: 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