系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
网络攻击-arp攻击
文章目录
系列文章目录ARP 攻击 原理一、结构体设计?MACIP headerARP 头二、测试代码1.arp reply 接口总结ARP 攻击 原理
提示:这里可以添加本文要记录的大概内容:
ARP 攻击是一种在局域网内有效的攻击方式,它是借助于arp包广播的特性的一种攻击方式。由于arp 包在居于网内是通过广播的方式进行寻址的数据包。在局域网内任意主机收到广播包就回复错误的arp 应答报文,造成寻址主机无法收到正确的应答报文造成主机无法上网。
提示:以下是本篇文章正文内容,下面案例可供参考
一、结构体设计?
准备采用netmap 实现简单的协议栈。设计的协议有mac,IP, arp 等协议。详细的结构体设计如下。
MAC
struct ethhdr {unsigned char h_dst[ETH_ADDR_LENGTH];unsigned char h_srt[ETH_ADDR_LENGTH];unsigned short type;}
IP header
// IP 头设计typedef struct iphdr {unsigned char iph_len:4,version:4; //0x45unsigned char tos;unsigned short totlen;unsigned short id;unsigned short flag_offset;unsigned char ttl;unsigned char type;unsigned short check;unsigned int sip;unsigned int dip;}
ARP 头
struct arphdr {unsigned short h_type;unsigned short h_prot;unsigned char h_addr_len;unsigned char h_protolen;// 协议区别IPV4 IPV6unsigned short opt; // 0.1 request replayunsigned char smac[ETH_ADDR_LEN];unsigned int sip;unsigned char dmac[ETH_ADDR_LEN];unsigned int dip;};struct arppkt {struct ethhdr eh;struct arphdr arp;};
二、测试代码
1.arp reply 接口
代码如下(示例):
void echo_arp_pkt(struct arppkt *arp, struct arppkt *arp_rt, char *mac) {memcpy(arp_rt, arp, sizeof(struct arppkt));memcpy(arp_rt->eh.h_dst, arp->eh.h_src, ETH_ADDR_LENGTH);str2mac(arp_rt->eh.h_src, mac);arp_rt->eh.h_proto = arp->eh.h_proto;arp_rt->arp.h_addrlen = 6;arp_rt->arp.h_protolen = 4;arp_rt->arp.oper = htons(2);str2mac(arp_rt->arp.smac, mac);arp_rt->arp.sip = arp->arp.dip;memcpy(arp_rt->arp.dmac, arp->arp.smac, ETH_ADDR_LENGTH);arp_rt->arp.dip = arp->arp.sip;}
总结
提示:这里对文章进行总结: