# VC\+\+基于winpcap实现ARP攻击禁止访问相关网站

Canonical: https://www.nsecsoft.com/technet/vc%E5%9F%BA%E4%BA%8Ewinpcap%E5%AE%9E%E7%8E%B0arp%E6%94%BB%E5%87%BB%E7%A6%81%E6%AD%A2%E8%AE%BF%E9%97%AE%E7%9B%B8%E5%85%B3%E7%BD%91%E7%AB%99.html

Language: zh-CN

Updated: 2020-10-26T09:48:33Z

地址解析协议（AddressResolutionProtocol，ARP）是在仅知道主机的IP地址时确地址解析 \[…\]

地址解析协议（Address Resolution Protocol，ARP）是在仅知道主机的IP地址时确

地址解析协议定其物理地址的一种协议。因IPv4和以太网的广泛应用，其主要用作将IP地址翻译为以太网的MAC地址，但其也能在ATM( 异步传输模式)和FDDIIP(Fiber Distributed Data Interface 光纤分布式数据接口)网络中使用。从IP地址到物理地址的映射有两种方式：表格方式和非表格方式。ARP具体说来就是将网络层（IP层，也就是相当于OSI的第三层）地址解析为数据连接层（MAC层，也就是相当于OSI的第二层）的MAC地址。  
1\. 什么是ARP?  
ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是：在IP-以太网中，当一个上层协议要发包时，有了节点的IP地址，ARP就能提供该节点的MAC地址。  
2\. 为什么要有ARP？  
OSI 模式把网络工作分为七层，彼此不直接打交道，只通过接口(layer interface). IP地址在第三层, MAC地址在第二层。协议在发送数据包时，得先封装第三层（IP地址），第二层（MAC地址）的报头, 但协议只知道目的节点的IP地址，不知道其MAC地址，又不能跨第二、三层，所以得用ARP的服务。  
3\. 什么是ARP  
cache? ARP cache 是个用来储存(IP, MAC)地址的缓冲区。当ARP被询问一个已知IP地址节点的MAC地址时，先在ARP cache 查看，若存在，就直接返回MAC地址，若不存在，才发送ARP request向局域网查询。  
4\. ARP 有什么命令行？  
常用的包括：（格式因操作系统、路由器而异，但作用类似）- 显示ARP cache: show arp; arp -a – 清除ARP cache: arp -d；clear arp。  
在TCP/IP协议中，A给B发送IP包，在报头中需要填写B的IP为目标地址，但这个IP包在以太网上传输的时候，还需要进行一次以太包的封装，在这个以太包中，目标地址就是B的MAC地址.  
计算机A是如何得知B的MAC地址的呢？解决问题的关键就在于ARP协议。  
在A不知道B的MAC地址的情况下，A就广播一个ARP请求包，请求包中填有B的IP(192.168.1.2)，以太网中的所有计算机都会接收这个请求，而正常的情况下只有B会给出ARP应答包，包中就填充上了B的MAC地址，并回复给A。  
A得到ARP应答后，将B的MAC地址放入本机缓存，便于下次使用。  
本机MAC缓存是有生存期的，生存期结束后，将再次重复上面的过程。  
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候，就会对本地的ARP缓存进行更新，将应答中的IP和MAC地址存储在ARP缓存中。因此，当局域网中的某台机器B向A发送一个自己伪造的ARP应答，而如果这个应答是B冒充C伪造来的，即IP地址为C的IP，而MAC地址是伪造的，则当A接收到B伪造的ARP应答后，就会更新本地的ARP缓存，这样在A看来C的IP地址没有变，而它的MAC地址已经不是原来那个了。由于局域网的网络流通不是根据IP地址进行，而是按照MAC地址进行传输。所以，那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址，这样就会造成网络不通，导致A不能Ping通C！这就是一个简单的ARP欺骗。  
在网络执法官中，要想限制某台机器上网，只要点击“网卡”菜单中的“权限”，选择指定的网卡号或在用户列表中点击该网卡所在行，从右键菜单中选择“权限”，在弹出的对话框中即可限制该用户的权限。对于未登记网卡，可以这样限定其上线：只要设定好所有已知用户（登记）后，将网卡的默认权限改为禁止上线即可阻止所有未知的网卡上线。使用这两个功能就可限制用户上网。其原理是通过ARP欺骗发给被攻击的电脑一个假的网关IP地址对应的MAC，使其找不到网关真正的MAC地址，这样就可以禁止其上网。  
ARP欺骗可以导致目标计算机与网关通信失败；
