#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
void main(int argc, char **argv)
{
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE];
u_char packet[100];
int i;
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int j=0;
/* 获得设备列表 */
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 打印列表 */
for(d=alldevs; d; d=d->next)
{
printf("%d. %s", ++j, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else
printf(" (No description available)\n");
}
if(j==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return ;
}
printf("Enter the interface number (1-%d):",j);
scanf("%d", &inum);
if(inum < 1 || inum > j)
{
printf("\nInterface number out of range.\n");
/* 释放设备列表 */
pcap_freealldevs(alldevs);
return ;
}
/* 跳转到已选设备 */
for(d=alldevs, j=0; j< inum-1 ;d=d->next, j++);
/* 打开输出设备 */
if ( (fp= pcap_open(d->name, // 设备名
100, // 要捕获的部分 (只捕获前100个字节)
PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式
1000, // 读超时时间
NULL, // 远程机器验证
errbuf // 错误缓冲
) ) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", argv[1]);
return;
}
pcap_freealldevs(alldevs);
/* 假设在以太网上,设置MAC的目的地址为 1:1:1:1:1:1 */
packet[0]=255;
packet[1]=255;
packet[2]=255;
packet[3]=255;
packet[4]=255;
packet[5]=255;
/* 设置MAC源地址为 2:2:2:2:2:2 */
packet[6]=10;
packet[7]=10;
packet[8]=10;
packet[9]=10;
packet[10]=10;
packet[11]=10;
packet[12]=96;
packet[13]=00;
/* 填充剩下的内容 */
for(i=14;i<100;i++)
{
packet[i]=i%256;
}
/* 发送数据包 */
if (pcap_sendpacket(fp, packet, 100 /* size */) != 0)
{
fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));
return;
}
return;
}
发送数据包
原创wg_FFjEdacB 博主文章分类:网络协议分析 ©著作权
©著作权归作者所有:来自51CTO博客作者wg_FFjEdacB的原创作品,谢绝转载,否则将追究法律责任
上一篇:arp欺骗
下一篇:ip协议解析 首部校验和

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
WinPcap发送数据包
一、前言尽管WinPcap从名字上来看表明他的主要目的是捕获数据包,但是他还为原始网
unix 服务器 网络 #include 数据 -
wireshark发送数据包
TCP的逻辑是极其复杂的,其学习曲线虽然很平缓但其每一步都是异常艰难,好在这些都是体力活,只要肯花时间也就不在话下了。想彻底理解一个TCP的机制,有个四部曲: 1.读与其相关的RFC;2.看Linux协议栈的TCP实现;3.通过抓包以及其它工具来确认事实就是如此;4.解决一个与之相关的网络问题。 经历了以上四步骤,相信任何人都可以在相关领域内稍微装逼一
wireshark发送数据包 packetdrill TCP快速重传 TCP拥塞窗口 TCP SACK -
数据包access 数据包发送正常收到为0
在最近这段时间的网络故障排除工作中,发现很多情况下有本地连接已经连接,但是有发送包却没有接收包的情况,现总结出如下几种情况: 1、双铰线的故障 &
数据包access 测试 工作 网络 本地连接