libnet

作者: 锈色的栅栏 | 来源:发表于2024-10-29 09:50 被阅读0次

概述:

libnet发原始套接字数据的库

安装:

sudo apt-get install libnet-dev

2.头文件

头文件:#include <libnet.h>
编译时加:-lnet

3.开发流程

1.数据包内存初始化

2.构造数据包

3.发送数据

4.释放资源


4.相关函数

libnet_t *libnet_init(int injection_type, char *device, char *err_buf)
功能:
        数据包内存初始化及环境建立
参数:
        injection_type: 构造的类型
        (LIBNET_LINK,LIBNET_RAW4,LIBNET_LINK_ADV(推荐),LIBNET_RAW4_ADV)
        device:网络接口,如"eth0",或IP地址,亦可为NULL(自动查询搜索)
        err_buf: 存放出错的信息
返回值:
        成功返回一个libnet句柄;失败返回NULL

void libnet_destroy(libnet_t*l);
功能:    释放资源
参数:     l:libnet句柄
返回值: 无

libnet_ptag_t  libnet_build_udp(u_int16_t sp,u_int16_t dp,u_int16_t len,u_int16_t sum,u_int8_t *payload,u_int32_t payload_s,libnet_t *l,libnet_ptag_t ptag)

功能:
        构造udp数据包
返回值:
        成功返回协议标记;失败返回-1
参数:
        sp: 源端口号
        dp:目的端口号
        len:udp包总长度
        sum:校验和,设为0,libnet自动填充
        payload:负载,可设置为NULL
        payload_s:负载长度,或为0
         l: libnet句柄
         ptag:协议标记(其值为0创建一个新的协议数据,不为0,修改由ptag表示的协议数据)

libnet_ptag_t libnet_build_ipv4(u_int16_t ip_len, u_int8_t tos,
        u_int16_t id, u_int16_t flag,
        u_int8_t ttl, u_int8_t port,
        u_int16_t sum, u_int32_t src,
        u_int32_t dst, u_int8_t *payload,
        u_int32_t payload_s, libnet_t *l,
        libnet_ptag_t ptag);

功能:构造一个IPv4数据包

参数:ip_len:ip包总长
        tos:服务类型
        id:id表示
        flag:片偏移
        ttl:生存时间
        prot:上层协议
        sum:校验和,设为0,libnet自动填充
        src:源IP地址
        dst:目的IP地址
        payload:负载,可设置为NULL
        payload_s:负载长度,或为0,
        l:libnet句柄
        ptag:协议标记

返回值:成功返回协议标记;失败返回-1

libnet_ptag_t libnet_build_ethernet(
        u_int8_t *dst,
        u_int8_t *src,
        u_int16_t type,
        u_int8_t *payload,
        u_int32_t payload_s,
        libnet_t *l,
        libnet_ptag_t ptag);

功能:构造一个以太网数据包

参数:dst:目的mac
        src:源mac
        type:上层协议类型   
        payload:负载,即附带的数据    
        payload_s:负载长度
        l:libnet句柄
        ptag:协议标记

返回值:成功返回协议标记;失败返回-1

int libnet_write(libnet_t *l);

功能:发送数据到网络

参数:l:libnet句柄

返回值:失败返回-1,成功返回其他。

相关文章

  • libnet发包过程

    2019/08/12(这篇文章更像是解释原生socket发包的过程 2019/08/13)今天具体了解了一下, 发...

  • Libnet发送UDP

    流程 数据包内存初始化 构造数据包 发送数据 释放资源 相关API 实例

  • libnet网络开发工具包

    1.安装:sudo apt-get install libnet-dev 2.编译:gcc *.c -ln...

  • DPDK发包流程

    2019/08/13今天在看libnet的发包过程的时候,才发现他的内容是多么复杂,我的理解是,这种通用库,他们的...

网友评论

      本文标题:libnet

      本文链接:https://www.haomeiwen.com/subject/qrwpdjtx.html