基于winpcap实现数据包分析c++可视化_[源码和文档分享]基于Winpcap实现的发送ARP数据包和IP数据包...

该项目介绍了如何使用Winpcap库完成两台主机间的数据链路层通信,包括仿真ARP协议获取MAC表,以及实现基于IP地址的数据通信。主要涉及以太网帧结构,通过发送和接收ARP包获取活动主机信息,并提供了Main.cpp和Receive.cpp的详细操作流程。
摘要由CSDN通过智能技术生成

1 项目介绍

1.1 基本任务

  • 完成两台主机之间的数据通信(数据链路层)
  • 仿真ARP协议获得网段内主机的MAC表
  • 使用帧完成两台主机的通信(Hello! I’m …)

1.2 高端任务

  • 完成两台主机通过中间主机的数据通信(网络层)
  • 增加基于IP地址的转发功能
  • 增加网络层封装

2 帧结构

2.1 以太网帧格式

b73904d4fd4cb40f798bca45ca3cdc16.png

06b91a93e4ffa19ec76579b9c40eecf2.png

2.3 对于基本任务

获取本机mac的实现原理:主机A发送了一个广播帧,sourceip则随便设置了一个,主要用于在接收帧的时候识别,在GetSelfMac的方法里,利用winpcap的pcap_next_ex抓取包的时候,判断sourceip是不是之前设定的那个就可以。

  • 获取活动主机的原理:广播arp包对返回的arp包进行数据解析。由于arp包的简洁性,发送和接收都很简单。
  • Main.cpp主要的活动:获取自己的mac—>获取局域网内的活动主机—>用户选择发送给哪台机器—>根据选择的主机,封装数据,目的mac,目的ip—>等待接收消息—>接收到消息,解包,解析出收到包的所有信息
  • Receive.cpp主要的活动:获取自己的mac—>等待接收数据—>接收到消息,解析,展示,然后提取出源mac,ip—>返回消息

图1:main获取mac(获取活动主机的忘记截图了,代码里有体现,为了测试,取消了这部分),发送消息之后,立刻把发送消息的信息输出来.

ad657082356fe86d3da19dd5796c706d.png

06b91a93e4ffa19ec76579b9c40eecf2.png

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1457.html

标 题: 【原创】基于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消息。 具体代码请看附件。 -------------------------------------------------------------------------------- 【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值