已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
linux下libnet编程原创/* 文档:linux下libnet编程 作者:Alanx Email: 版本: 0.01 本文档Alanx所有,转载请注明! 本文源代码参考libnet例子代码及arpoison源代码*/一、下载安装libnet我下的是1.13RC01版的。很简单,下载下来解开./configuremakemake install即可(注意,在root权根下安装)二、编程1、include 把库导入进来!2、关于IP的数据结构。IP为32位无符号整型、可以用以下类型:u_int32_t 或u_long可以用 inet_addr()把字符型的指针或数组转换成IP地址。3、关于MAC的数据结构MAC的数据结构是6个8位的数组,每个数组中记录的一个十六进制的数据,共48位的硬件地址。struct macaddr u_char MAC6; /* 或u_int8_t MAC6 */;4、初始化libnet,分配内存函数 libnet_init( )char device =eth0;/*这是网卡的名子*/char errbufLIBNET_ERRBUF_SIZE;/如果程序中出错。出错信息都保存在该数据中。libnet_t *plibnet_app;plibnet_app=libnet_init(LIBNET_LINK_ADV, device, errbuf);/第一个参数设定这个实列是在链路层工作,还是在IP层工作。/*出错处理*/if (NULL =plibnet_app) printf(libnet_init: error %sn, errbuf); exit(1);/*出错处理*/该函数返回一个libnet的实例指针,以后听数据包的构建及发送都要用到该实例指针。也许实例不准确,也可以说是句柄。随他怎么说吧。反证以是分配了内存。并提供给我们了一个指针。其它函数可以调用这个指针,向libnet_t这个数扰结构里写一些内存。5、制造数据包本着先高层后低层的顺序。比如ARP数据包。我们先构造ARP包。然后在构造ETHERNET的数据包。这里我们以新建一个ARP数据包为例:首先先调用:libnet_build_arp()该函数返回一个libnet_ptag_t类型的值。来表示是否建立成功。不成功返回1。其实libnet_ptag_t的数据类型估计是整型啥的。可以不考虑。只要不是返回1,就说明APR数据包构造成功了。例如下:libnet_ptag_t ptag;ptag = libnet_build_arp( 1, /* hardware type */ 0x0800, /* proto type */ 6, /* hw addr size */ 4, /* proto addr size */ ARPOP_REPLY, /* ARP OPCODE */ SrcMAC, /* source MAC addr */ (u_char *)&SrcIP, /* src proto addr */ DstMAC, /* dst MAC addr */ (u_char *)&DstIP, /* dst IP addr */ NULL, /* no payload */ 0, /* payload length */ plibnet_app, /* libnet tag */ 0); /* ptag see man */*出错处理*/if (-1=ptag) /* 把1写在前面是怕我们粗心的写成 ptag=1 */ perror(libnet_build_arp); exit(1);/*出错处理*/以上代码基本上只注意其中的几个参数就可以了:ARPOPREPLY 这个参数是个宏也可以是 ARP_REQUEST;表明是ARP查询还是应达。SrcMAC 指向源MAC数组的指针DesMAC 指向目地MAC数组的指针SrcIP 指向源IP地址的指针DstIP 指向目地IP地直的指针plibnet_app 刚才我们初始化libnet返回的指针接下来。我们构造这个ARP包的底层,也就是物理层的数据。一般是ethernet层的ethernet 头数据包。用函数libnet_build_ethernet( );这个函数很简单同上。也返回一个 libnet_ptag_t的值。如果是1,说明失败。libnet_ptag_t eth_tag;eth_tag = libnet_build_ethernet( DstMAC, /* dst MAC addr */ SrcMAC, /* src MAC addr */ 0x0806, /* ether packet type */ NULL, /* ptr to payload */ 0, /* payload size */ plibnet_app, 0); /* ptr to packet memory */*出错处理*/if (-1 = eth_tag) perror(libnet_build_ethernet); exit(1);/*出错处理*/同样只注意 DstMAC ,SrcMAC , plibnet_app三个数据就可以了。6、发送数据包。一般用一个无限的循环 如:int n;/*n=-1时没有发送成功*/for(;)n= libnet_write(plibnet_app);/*出错处理*/if(-1=n)printf(lost packetn);/*出错处理*/;7、释放内存。libnet_destroy(plibnet_app);三、编译gcc 源文件.c -o 目标文件 lnet四、回顾一下上面的知识。写一个小程序。(注意,这里没有错误检查,为的是让代码更短小)#include int main() char device =eth1; u_int32_t srcip, desip; u_char srcmac6=0x11,0x11,0x11,0x11,0x11,0x11; u_char desmac6=0x22,0x22,0x22,0x22,0x22,0x22; libnet_t *plibnet_app; char errbuf100; plibnet_app=libnet_init(LIBNET_LINK_ADV, device, errbuf);/*下面填充要构造的数据包的内容要源IP地址:0 MAC地址:11:11:11:11:11:11目标IP地址: MAC地址:22:22:22:22:22:22源IP向目地IP发送应答包。应答0的MAC地址为11:11:11:11:11:11*/ srcip=inet_addr(0); desip=inet_addr();/* 以下开始构造ARP包 及ETHERNET包头 */ libnet_build_arp( ARPHRD_ETHER,/hardware addr ETHERTYPE_IP,/protocol addr 6,/hardware addr size 4,/protocol addr size ARPOP_REPLY,/operation type (u_int8_t*)&srcmac,/sender hardware addr (u_int8_t point) (u_int8_t *)&srcip,/sender protocol addr(u_int8_t point) (u_int8_t*)&desmac,/target hardware addr(u_int8_t point) (u_int8_t *)&desip,/target protocol addr(u_int8_t point) NULL,/payload 0,/payload size plibnet_app,/libnet handle 0/*libnet id*/); libnet_build_ethernet( desmac,/des HW addr* srcmac,/src HW addr* 0x0806,/ether packet type NULL,/prt to payload 0,/payload size plibnet_app,/libnet handle 0);/ptr toi packet memory/* 构造完成。开始发包 */ for(;) /libnet_adv_cull_packet(plibnet_app, &packet, &packet_size); libnet_write(plibnet_app); printf(Send ARP Packetn); sleep(1); ;/*结束*/ libnet_destroy(plibnet_app); return 0;/*UBUNTU7.10, libnet1.13RC01下调试通过* gcc te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客运车辆监控日志复核细则
- 抗体药物产业发展现状与技术创新研究
- 2026年6月浙江省高考政治真题卷(含答案与解析)
- 医院感染防控策略
- 卫生服务社会营销管理
- 初三物理家庭电路课件正式版
- nA墩柱施工技术交底演示
- 银行服务总结3篇
- 证券公司年度工作总结32篇-1
- 医院HIS总体结构
- 太平保险在线测评题
- 水库改造工程社会稳定风险评估报告
- 展会策划高手如何利用AI设计展台与互动体验环节技巧
- 2025年北银金科技术笔试及答案
- 神华集团公司招聘笔试题库2026
- T-CISA 338-2023 轧钢加热炉用高温耐热合金垫块
- 中国电信校招笔试题及答案
- 道路运输安全保证计划
- 计算机与人工智能导论 课件 第3章-计算机硬件基础
- 有声读物市场细分2025年有声读物行业风险预警研究报告
- 武汉市社区工作者管理办法原文
评论
0/150
提交评论