粉丝不过W

Libpcap

pcap_open_live( )

/**function:*  打开一个网络结构畸形数据包捕获*parameter:*  device:  网络接口的名字*  snaplen: 捕获数据包的长度*  promise: 1代表混杂模式,其它非混杂模式*  to_ms:   等待时间*  ebuf:    存储错误信息*return:*  一个Libpcap句柄*/
pcap_t *pcap_open_live(const char *device,int snaplen,int promisc,int to_ms,char *ebuf)

pcap_close( )

/**function:*  关闭Libpcap操作,并销毁相应的资源*parameter:*  p: 需要关闭的Libpcap句柄*/
void pcap_close(pcap_t *p)

pcap_compile( )

/**function:*  编译BPF过滤规则*parameter:*  p:         Libpcap句柄*  program:  bpf过滤规则*  buf:       过滤规则字符串*  optimize: 优化*  mask:     掩码*return:*  成功: 0*  失败: -1*/
int pcap_compile(pcap_t *p,struct bpf_program *program,char *buf,int optimize,bpf_u_int32 mask)

pcap_setfilter( )

/**function:*  设置BPF过滤规则*parameter:*  p:  Libpcap句柄*  fp: BPF过滤规则*return:*  成功: 0*  失败: -1*/
int pcap_setfilter(pcap *p, struct bpf_program *fp)

pcap_next( )

/**function:*  捕获一个网络数据包*parameter:*  p: Libpcap句柄*  h: 数据包头*return:*  捕获的数据包的地址*/
const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)

pcap_loop( )

/**function:*  循环捕获网络数据包,直到遇到错误或者满足退出条件*每次捕获一个数据包就会调用callback指示的回调函数,所以可在回调函数中进行数据包的处理操作*parameter:*  p:       Libpcap句柄*  cnt:     指定捕获数据包的个数,如-1,会永无休止的捕获*  callback:回调函数*  user:    向回调函数中传递的参数*return:*  成功:0*  失败:负数*/
int pcap_loop(pcap_t *p,int cnt, pcap_handler callback,u_char *user);typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *, const u_char *);

Libnet

libnet_init( )

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

libnet_destroy( )

/**function:*  释放资源*parameter:*  l: libnet_init返回的句柄*/
void libnet_destroy(libnet_t *l);

libnet_addr2name4( )

/**function:*  将网络字节序转换成点分十进制数串*parameter:*  in: 网络字节序的ip地址*  use_name: LIBNET_RESOLVE、LIBNET_DONT_RESOLVE*return:*  成功: 点分十进制ip地址*  失败: NULL*/
char* libnet_addr2name4(u_int32_t in, u_int8_t use_name)

libnet_name2addr4( )

/**function:*  将点分十进制数串转换为网络字节序ip地址*parameter:*  l: libnet句柄*  host_name: 点分十进制数串的地址*  use_name: LIBNET_RESOLVE, LIBNET_DONT_RESOLVE*return:*  成功: 网络字节序ip地址*  失败: -1*/
u_int32_t libnet_name2addr4(libnet_t *l, char *host_name, u_int8_t use_name)

libnet_get_ipaddr4( )

/**function:*  获取接口设备ip地址*parameter:*  l: libnet句柄*return:*  成功: 网络字节序的ip地址*  失败: -1*/
u_int32_t libnet_get_ipaddr4(libnet_t *l)

bnet_get_hwaddr( )

/**function:*  获取接口设备硬件地址*parameter:*  l : libnet句柄*return:*  成功: 指向MAC地址的指针*  失败: NULL*/
struct libnet_ether_addr* libnet_get_hwaddr(libnet_t *l)

libnet_build_udp( )

/**function:*  构造udp数据包*parameter:*  sp:         源端口号*  dp:        目的端口号*  len:       udp包总长度*  sum:       校验和,设为0,libnet自动填充*  payload:   负载,可设为NULL*  payload_s: 负载长度,或为0*  l:          libnet句柄*  ptag:      协议标记*return:*  成功: 协议标记*  失败: -1*/
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)

libnet_build_tcp( )

/**function:*  构造tcp数据包*parameter:*  sp:         源端口号*  dp:        目的端口号*  seq:       序号*  ack:       ack标记*  control:   控制标记*  win:       窗口大小*  sum:       校验和,设为0,ibnet自动填充*  urg:       紧急指针*  len:       tcp包长度*  payload:   负载,可设为NULL*  payload_s: 负载长度,或为0*  l:          libnet句柄*  ptag:      协议标记*return:*  成功: 协议标记*  失败: -1*/
libnet_ptag_t libnet_build_tcp(u_int16_t sp,        u_int16_t dp,u_int32_t seq,       u_int32_t ack,u_int8_t  control,   u_int16_t winu_int16_t sum,       u_int16_t urg,u_int16_t len,       u_int8_t  *payload,u_int32_t payload_s, libnet_t  *l,libnet_ptag_t ptag)

libnet_build_tcp_options( )

/**function:*  构造tcp选项数据包*parameter:*  options:   tcp选项字符串*  options_s: 选项长度*  l:        libnet句柄*  ptag:     协议标记,若为0, 建立一个新的协议*return:*  成功: 协议标记*  失败: -1*/
libnet_ptag_t libnet_build_tcp_options(u_int8_t *options,u_int32_t options_s,libnet_t *l, libnet_ptag_t ptag)

libnet_build_ipv4( )

/**function:*  构造一个 IPv4 数据包*parameter:*  ip_len:    ip 包总长*  tos:       服务类型*  id:        ip标识*  flag:      片偏移*  ttl:       生存时间*  prot:      上层协议*  sum:       校验和,设为0,libnet自动填充*  src:        源ip地址*  dst:       目的ip地址*  payload:   负载,可设为NULL*  payload_s: 负载长度,或为0*  l:          libnet句柄*  ptag:      协议标记*return:*  成功: 协议标记*  失败: -1*/
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  prot,u_int16   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);

libnet_build_ipv4_options( )

/**function:*  构造IPv4选项数据包*parameter:*  options: tcp选项字符串*  options_s: 选项长度*  l: libnet句柄*  ptag: 协议标记,若为0,建立一个新的协议*return:*  成功: 协议标记*  失败: -1*/
libnet_ptag_t libnet_build_ipv4_options(u_int8_t *options,u_int32_t options,libnet_t *l,libnet_ptag_t ptag)

libnet_build_arp( )

/**function:*  构造 arp 数据包*parameter:*  hrd:      硬件地址格式, ARPHRD_ETHER( 以太网)*  pro:      协议地址格式, ETHERTYPE_IP( IP协议)*  hln:      硬件地址长度*  pln:      协议地址长度*  op:       ARP协议操作类型 1: ARP请求,2: ARP回应,3: RARP请求,4: RARP回应*  sha:      发送者硬件地址*  spa:      发送者协议地址*  tha:      目标硬件地址*  tpa:      目标协议地址*  payload:  负载,可设为NULL*  payload_s:负载长度,或为0*  l:         libnet句柄*  ptag:     协议标记*return:*  成功: 协议标记*  失败: -1*/
libnet_ptag_t libnet_build_arp(u_int16_t hrd,       u_int16_t pro,u_int8_t  hln,       u_int8_t  pln,u_int16_t op,        u_int8_t  *sha,u_int8_t  *spa,      u_int8_t  *tha,u_int8_t  *tpa,      u_int8_t  *payload,u_int32_t payload_s, libnet_t  *l,libnet_ptag_t ptag)

libnet_build_ethernet( )

/**function:*  构造一个以太网数据包*parameter:*  dst:       目的 mac*  src:       源mac*  type:      上层协议类型*  payload:   负载,即附带的数据*  payload_s: 负载长度*  l:         libnet句柄*  ptag:      协议标记*return:*  成功: 协议标记*  失败: -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)

Libpcap Libnet 各个接口pai 巨细相关推荐

  1. Centos7安装libpcap+libnet+libnids

    Centos7安装libpcap+libnet+libnids 1.安装GCC yum -y install gcc-c++ 2.安装flex yum -y install flex 3.安装biso ...

  2. libnet编译linux,libnids libpcap libnet 安装

    libnids libpcap libnet 安装 (2010-03-21 10:47:46) 标签: libnids libpcap libnet libnids-dev libpcap-dev l ...

  3. 基于 linux 平台的 libpcap 源代码分析

    libpcap 是 unix/linux 平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础.Libpcap 可以在绝大多数类 unix 平台下工作,本文分析了 libpcap 在 linu ...

  4. libnet apply method

    Libnet是一个高层API,使用C语言实现的,为应用程序设计人员提供了底层的网络数据报的构造处理和发送等功能接口. Libnet提供的接口函数主要用于实现和封装了数据包的构造和发送过程. 首先是对l ...

  5. libnet/libnids库函数介绍

    在Unix系统平台上的网络安全工具开发中,目前最为流行的CAPIlibrary有libnet. libpcap.libnids和libicmp等.它们分别从不同层次和角度提供了不同的功能函数.使 网络 ...

  6. 使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式

    本文基本翻译自https://wiki.wireshark.org/Development/LibpcapFileFormat,主要分析pcap文件的格式. 其中一些字段可能和现在的WinPcap类库 ...

  7. libpcap 源代码分析(二)

    网络监控 绝大多数的现代操作系统都提供了对底层网络数据包捕获的机制,在捕获机制之上可以建立网络监控(Network Monitoring)应用软件.网络监控也常简称为sniffer,其最初的目的在于对 ...

  8. libpcap抓取数据包

    libpcap是数据包捕获函数库.该库提供的C函数接口可用于需要捕获经过网络接口数据包的系统开发上.libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程.这个库为不同的平台提供了一致的编 ...

  9. linux下libpcap抓包分析

    一.首先下载libpcap包http://www.tcpdump.org/#latest-release 然后安装,安装完成后进入安装根目录的tests文件夹,编译运行findalldevstest. ...

最新文章

  1. mybatis3进行模糊查询的总结
  2. volatile 和 mutable 关键字
  3. 深入理解ByteBuffer
  4. 要注意页面中加载的第三方脚本
  5. Markdown编辑器“MarkdownPad”下载安装(图)
  6. 音频处理九:(参数估计)
  7. axis2 调用webservice
  8. Nslookup-查dns
  9. Kafka:那我走?这个新一代消息中间件,彻底火了!
  10. 真静态和伪静态的区别
  11. 脚本启动显示查询频繁被服务器防御_面对CC攻击,该如何进行防御
  12. [leetcode 70]Climbing Stairs
  13. OpenCV鼠标事件和滑动条事件
  14. 虚拟机VMware下安装Linux系统,Python3.7之TensorFlow安装
  15. 宝宝安全座椅什么牌子好?[自己参考]
  16. 《R语言编程艺术》——第1章 1.0 快速入门
  17. Dos系统功能调用表9号功能
  18. php原始 实现双向队列,用PHP实现一个双向队列
  19. DF1协议的CSP寻址
  20. Shapley值法介绍及实例计算

热门文章

  1. 阿里云移动研发平台EMAS是什么?移动研发平台EMAS有什么特色?
  2. STM32——中断优先级分组
  3. 【更新】Kendo UI for jQuery发布R2 2018|附下载
  4. ECMAScript 2019(ES10) 的新特性总结
  5. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
  6. web前端高级React - React从入门到进阶之React条件渲染
  7. document.forms[0].submit();和document.forms[0].action = ““;问题
  8. vMotion迁移报错提示目标主机不支持虚拟机的当前硬件要求
  9. NetBIOS、WINS、DNS的联系和区别
  10. NLP--2 语言结构和传统pipeline