libnet 1.1核心功能及常用函数(备忘录)

这篇博客详细介绍了libnet 1.1库的工作流程和主要函数,包括libnet_init()初始化、报头构建、libnet_write()发送数据包、libnet_clear_packet()清除数据包等。还列举了如libnet_seed_prand()生成随机数、libnet_addr2name4()地址转换、libnet_build_ethernet()创建以太网报头等关键函数的使用。
摘要由CSDN通过智能技术生成

本文用于记录libnet 1.1核心功能及常用函数,主要内容来源于Libnet 1.1 tutorial(https://repolinux.wordpress.com/2011/09/18/libnet-1-1-tutorial/)和libnet_functions.h。


1、libnet如何工作:

(1)通过libnet_init()函数进行初始化,建立libnet context;

(2)从高层到低层建立报头。例如,建立UDP数据包时,调用函数的顺序如下:libnet_build_udp(), libnet_build_ipv4(), libnet_build_ethernet()

(3)调用libnet_write()写入数据包,发送;

(4)准备发送新的数据包,一般而言,有以下两种方式:

(4.1)调用libnet_clear_packet()清除之前发送的数据包,回到第(2)步;

(4.2)接着上次发送的数据包继续发送:即回到第(2)步,并使用相同函数更新数据包,但是现在所使用的数据包tag是上次发送数据包后所返回的tag;

(5)完成所有数据包发送工作,调用libnet_destroy()清除libnet context,退出。


2、libnet中的主要函数:

(1)初始化及注销

// libnet context初始化,injection_type包括(LIBNET_LINK, LIBNET_LINK_ADV, LIBNET_RAW4, LIBNET_RAW4_ADV, LIBNET_RAW6, LIBNET_RAW6_ADV)
libnet_t *libnet_init(int injection_type, const char *device, char *err_buf);

// 注销libnet context

void libnet_destroy(libnet_t *l);

// 清除上次发送的封包

void libnet_clear_packet(libnet_t *l);


(2)生成随机数

// 通常用于为第一个封包生成随机的ID number

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值