网络攻击-arp攻击

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
网络攻击-arp攻击



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;  //0x45
				 unsigned 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  IPV6
	unsigned short opt;           // 0.1 request replay
	unsigned 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;

}

总结

提示:这里对文章进行总结:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值