winpcap如何自动选择网卡

小亮k 2013-10-27 12:20:36
用winpcap写一个发包实现ddos攻击的程序,现在每次执行程序时都要手动选择网卡,如何编程实现自动获取最佳网卡?
...全文
1464 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesen 2015-08-06
  • 打赏
  • 举报
回复
我觉得有两种办法: 1、预先指定好网卡的ip地址(比如弄个配置文件),然后逐个网卡匹配ip地址 2、另外一个思路比较笨,逐一打开设备并统计单位时间内收到的数据包,数据包最多的显然是命中的网卡,没有数据包或很少数据包的网卡一般不在工作(如没插网线)。
欧阳春晖 2014-03-08
  • 打赏
  • 举报
回复
这个没办法直接判断最佳网卡
「已注销」 2013-12-13
  • 打赏
  • 举报
回复
	pcap_if_t *alldevs;
	pcap_if_t *seldev;
	pcap_t *fp;
	char errbuf[PCAP_ERRBUF_SIZE];
	srand(time(0));
    
    /* 获取本机设备列表 */
    if (pcap_findalldevs(&alldevs, errbuf) == -1)
    {
        fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
        exit(1);
    }

	// 找到一个有ip的就当有连网的网卡了
	for (seldev = alldevs; seldev != NULL; seldev = seldev->next)
	{
		pcap_addr* pcapaddr = NULL;
		for (pcapaddr= seldev->addresses; pcapaddr != NULL; pcapaddr = pcapaddr->next)
		{
			if (pcapaddr->addr->sa_data[2] != '\0' && pcapaddr->addr->sa_data[3] != '\0')
			{
				break;
			}
		}
		if (pcapaddr != NULL)
		{
			break;
		}
	}
	if (seldev == NULL)
	{
		fprintf(stderr, "Can not find network!\n");
		exit(1);
	}

	/* 打开这个输出设备 */
    if ( (fp= pcap_open(seldev->name,            // 设备名
		100,                // 要捕获的部分 (只捕获前100个字节)
		PCAP_OPENFLAG_PROMISCUOUS,  // 混杂模式
		1000,               // 读超时时间
		NULL,               // 远程机器验证
		errbuf              // 错误缓冲
		) ) == NULL)
    {
        fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", alldevs->name);
        return -1;
    }
Heaven13483 2013-12-05
  • 打赏
  • 举报
回复
请问,您这个问题解决了吗??我也想请教一下。。
标 题: 【原创】基于WinPCap的网络协议开发 - 炮王(超级打炮机)发送数据包(03) 作 者: 加百力 时 间: 2009-05-18,16:55:36 链 接: http://bbs.pediy.com/showthread.php?t=89175 【文章标题】: 基于WinPCap的网络协议开发 - 炮王(超级打炮机)发送数据包(03) 【文章作者】: 加百力 【软件名称】: WinPCap 【下载地址】: http://www.winpcap.org/ 【内部编号】: MASSADA 0029 【编写语言】: C++ 【使用工具】: VS2005 【操作平台】: Windows 2003 -------------------------------------------------------------------------------- 【详细过程】 在第一篇文章中我们提到WinPCap的基本功能之一就是:  1> 在网络上发送原始的数据包。 发送原始数据包难度不大,只需要应用几个简单的函数就可以了。 我编写炮王程序的主要目的是为了测试WinPCap/libpcap的抓包能力,在不同网速和数据包大小的条件下libpcap的抓包率有多少。 炮王特点: 01、可以发送任意协议的数据包。TCP/IP等等。 02、针对每次发包,会返回状态,可以检测是否成功。在程序中如果失败会自动退出。 03、可以随机修改数据包的:源、目的MAC地址,IP地址,端口、数据内容等属性信息。 04、使用多线程发包,在XP下最多可以同时开2000个线程发包,发包速度快,流量大。在千兆网卡上可以超过15M/s的速度。 05、自动统计发包时间,计算每秒发包数量,流量。 06、可以设置发包的时间间隔,最少到1毫秒。 炮王使用方法: 首先直接运行pw.exe可以看到程序提示的参数信息和显示的当前可用网卡信息。可用网卡信息会保存在CardsInfo.txt文件中。 打开BAT脚本,修改网卡信息,即可。 运行脚本,脚本将数据包文件发送出去。 注意:总的发包数量等于每个线程的发包数量乘以线程总数。 实验的数据包文件都是MSN消息。 具体代码请看附件。 -------------------------------------------------------------------------------- 【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

9,506

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧