首页天道酬勤wireshark抓一个网段(wireshark分析arp攻击)

wireshark抓一个网段(wireshark分析arp攻击)

admin 01-28 20:08 303次浏览

最近很多人发现了。 我写了一些协议分析文章,但大多数人对以太网点对点协议的pppoe协议说明、PPTP协议详细信息以及消息分析协议不太熟悉。 从事网络安全开发的人可能很常见! 今天主要研究ARP协议。

什么是ARP协议

地址解析协议(ARP )或地址解析协议用于查询IP地址到MAC地址的映射,即查询与目标IP相对应的MAC地址。 一般而言,由于上层APP应用经常关心IP地址而不是MAC地址,因此需要通过ARP协议来知道目的地主机的MAC地址并完成数据封装。

ARP协议在网络层下充当OSI网络和OSI链路层间接口的一部分。 在以太网上使用IPv4时使用。

ARP有哪些类型

ARP协议扩展的“代理ARP”、“免费ARP”、“RARP”、“IARP”和类型。 这些不同类型的ARP主要用于:

代理ARP

代理ARP是一种允许一个网络上的代理设备响应ARP请求并获取不在该网络上的IP地址的技术。 代理知道流量的目的地位置,并提供自己的MAC地址作为目的地。

免费ARP

免费ARP几乎就像一个虚拟机管理程序,网络上的主机可以轻松地将IP地址声明或更新为MAC地址。 ARP请求不会指示免费的ARP将IP地址转换为MAC地址。

随机存取存储器

可以使用reverseaddressressolutionprotocol (rarp )发现不知道自己IP地址的主机。

国际航空航天局

ARP使用IP地址搜索MAC地址,IARP使用MAC地址搜索IP地址。

为什么需要ARP

ARP是必需的,因为连接到网络的主机或计算机的软件地址(IP地址)必须转换为硬件地址(MAC地址)。

如果没有ARP协议,主机将找不到另一台主机的硬件地址。

ARP工作流程

ARP的完整交互过程只有两个包,一问一答就可以了! 一个是ARP请求过程,另一个是ARP应答过程。

为了更好地理解ARP协议、广播和单播的概念,让我们用数据包来表示在Wireshark上捕获的实际网络中的ARP进程。

ARP请求进程:

当主机PC1尝试向主机PC2发送数据时,主机PC1首先检查其本地ARP缓存表中与主机PC2相匹配的MAC地址。 如果主机PC1在它的缓存表中找不到有关主机PC2的条目,请考虑获取主机PC2的MAC地址的方法。 为此,必须向本地网络上的所有主机广播ARP请求帧。

ARP请求包:

介绍其消息格式,以便用户在分析ARP协议包之前更清楚地了解每个包。

以太网报头信息确定该分组是否是实际广播分组。 发现此数据包的目标地址为ff : ff : ff : ff : ff : ff : ff。 这是广播地址。 这表示当前数据包将广播到当前网段中的所有设备,因为主机PC2不知道PC1主机的MAC地址。 此数据包中以太网的源地址是本机的MAC地址。

标识硬件类型字节、硬件类型和链路层协议。

标识协议类型字节、协议类型和网络层协议。

用于标识硬件大小字节、硬件地址大小和MAC地址的长度。 此处为6字节(48位)。

协议大小字节、协议地址大小、识别IP地址长度,这里是4字节(32位)。

占用Opcode字节,识别操作码、ARP包类型,其中1表示请求,2表示响应。

发送者MAC地址字节,发送者MAC。

sender IP地址字节,占发件人IP。

Target MAC address字节、目标MAC,在本例中均表示0正在请求中。

目标IP地址字节,目标IP。

ARP响应流程:

主机PC2将包含其MAC地址的ARP答复消息直接发送回主机PC1。 主机PC1当接收到来自主机PC2的ARP答复消息时,将主机PC2的IP地址和MAC地址添加到其ARP缓存表中。 接着,主机PC1可以向主机PC2发送消息。

ARP响应数据包:

arp答复消息类似于arp请求消息。 不同的是,在这种情况下,以太网报头的报头部分的目的地MAC地址是发送ARP协议地址解析请求的MAC地址,而源MAC地址是已解析的主机MAC地址。 另外,操作类型为2时,表示是响应数据消息。

标识硬件类型字节、硬件类型和链路层协议。

标识协议类型字节、协议类型和网络层协议。

用于标识硬件大小字节、硬件地址大小和MAC地址的长度。 此处为6字节(48位)。

协议大小字节、协议地址大小、识别IP地址长度、

这里是4个字节(32bit)。
Opcode: 占2字节,操作代码,标识ARP数据包类型,1表示请求,2表示回应。
Sender MAC address :占6字节,发送者MAC。
Sender IP address :占4字节,发送者IP。
Target MAC address :占6字节,目标MAC,此处全0表示在请求。
Target IP address: 占4字节,目标IP。

按wireshark格式解析ARP协议:

int main(int argc, char* argv[]){ char errbuf[1024]; pcap_t *desc = 0; char *filename = argv[1]; if (argc != 2) { printf("usage: ./dissect_pppoe [pcap file]\n"); return -1; } printf("ProcessFile: process file: %s\n", filename); if ((desc = pcap_open_offline(filename, errbuf)) == NULL) { printf("pcap_open_offline: %s error!\n", filename); return -1; } pcap_loop(desc, pkt_number, (pcap_handler)ace_pcap_hand, NULL); pcap_close(desc); return 0;}

输出结果:

ARP到底是链路层还是网络层?

这里给一下我的观点,协议到底所属哪一层,ARP协议能获取到MAC信息,服务于链路层,是不是属于链路层?如果往这方面想的话,ARP是链路层。

以太网协议类型0x0800是IP协议,0x0806是ARP协议,都是在一个层面上,IP是网络层,那么ARP认为是网络层。

在《TCP/IP详解卷一》里面就提到了这个问题,感兴趣的小伙伴可以去看看。

总结

在发送数据的时候,只知道目标IP地址,不知道MAC地址,而又不能跨越第二、三层实现通讯,这就需要使用地址解析协议(ARP)。

ARP协议是在RFC826中定义的。RFC是定义各种协议实现标准的官方文档,建议大家在学习网络知识的时候,应当多多参考这些资料,因为它最权威,也最全面。

参考: https://www.rfc-editor.org/info/rfc826

欢迎关注微信公众号【程序猿编码】,需要ARP源代码和报文的添加本人微信号(17865354792)

TypeScript基础使用实例分析OpenCV绘制正多边形的方法linux下的lvm软件制作过程演示-linux运维tiktok安卓怎么连国内网如何为eslintnextline禁用多个规则让跨境公网不稳定去见鬼吧详解docker-compose速度太慢解决方式SpringBoot Web静态资源规则与定制化怎么处理
ip抓包分析(wireshark抓包过滤) wireshark分析tcp报文(wireshark分析http包)
相关内容