`
huanlong78
  • 浏览: 34082 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

转帖别人的一个 自定义ARP发送

阅读更多

可以当做 arp 攻击 ,  也可以作为 网关arp 欺骗的主动防御手段.

 

敬告: 不要作恶 .

 

 

#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <signal.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/ip_icmp.h>
#include <linux/if_ether.h>
#define ETH_HW_ADDR_LEN 6
#define IP_ADDR_LEN 4
#define ARP_FRAME_TYPE 0x0806
#define ETHER_HW_TYPE 1
#define IP_PROTO_TYPE 0x0800
#define OP_ARP_REQUEST 2
#define OP_ARP_QUEST 1
#define DEFAULT_DEVICE "eth0"

char usage[] =
{"send_arp: sends out custom ARP packet. ferrysnow@gmail.com \nusage : fixarp sourceIP sourceHwAddr gatewayIP gatewayHwAddr"};

struct arp_packet
{
	u_char targ_hw_addr[ETH_HW_ADDR_LEN];
	u_char src_hw_addr[ETH_HW_ADDR_LEN];
	u_short frame_type;
	u_short hw_type;
	u_short prot_type;
	u_char hw_addr_size;
	u_char prot_addr_size;
	u_short op;
	u_char sndr_hw_addr[ETH_HW_ADDR_LEN];
	u_char sndr_ip_addr[IP_ADDR_LEN];
	u_char rcpt_hw_addr[ETH_HW_ADDR_LEN];
	u_char rcpt_ip_addr[IP_ADDR_LEN];
	u_char padding[18];
};

void die(char*);
void get_ip_addr(struct in_addr*, char*);
void get_hw_addr(char*, char*);

int main(int argc, char* argv[])
{
	struct in_addr src_in_addr, targ_in_addr;
	struct arp_packet pkt;
	struct sockaddr sa;
	int sock;
	int j;// number;
	if (argc != 5)
	{
		die(usage);
	}
	sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_RARP));
	if (sock < 0)
	{
		perror("socket");
		exit(1);
	}
	//number = atoi(argv[5]);
	pkt.frame_type = htons(ARP_FRAME_TYPE);
	pkt.hw_type = htons(ETHER_HW_TYPE);
	pkt.prot_type = htons(IP_PROTO_TYPE);
	pkt.hw_addr_size = ETH_HW_ADDR_LEN;
	pkt.prot_addr_size = IP_ADDR_LEN;
	pkt.op = htons(OP_ARP_QUEST);
	get_hw_addr(pkt.targ_hw_addr, argv[4]);
	get_hw_addr(pkt.rcpt_hw_addr, argv[4]);
	get_hw_addr(pkt.src_hw_addr, argv[2]);
	get_hw_addr(pkt.sndr_hw_addr, argv[2]);
	get_ip_addr(&src_in_addr, argv[1]);
	get_ip_addr(&targ_in_addr, argv[3]);
	memcpy(pkt.sndr_ip_addr, &src_in_addr, IP_ADDR_LEN);
	memcpy(pkt.rcpt_ip_addr, &targ_in_addr, IP_ADDR_LEN);
	bzero(pkt.padding, 18);
	strcpy(sa.sa_data, DEFAULT_DEVICE);
	while(1)
	{
		if (sendto(sock, &pkt, sizeof(pkt), 0, &sa, sizeof(sa)) < 0)
		{
			perror("sendto");
			exit(1);
		}
		usleep(100000);
	}
	exit(0);
}


void die(char* str)
{
	fprintf(stderr, "%s\n", str);
	exit(1);
}


void get_ip_addr(struct in_addr* in_addr, char* str)
{
	struct hostent* hostp;
	in_addr->s_addr = inet_addr(str);
	if (in_addr->s_addr == -1)
	{
		if ((hostp = gethostbyname(str)))
		{
			bcopy(hostp->h_addr, in_addr, hostp->h_length);
		}
		else
		{
			fprintf(stderr, "send_arp: unknown host %s\n", str);
			exit(1);
		}
	}
}


void get_hw_addr(char* buf, char* str)
{
	int i;
	char c, val;
	for (i = 0; i < ETH_HW_ADDR_LEN; i++)
	{
		if (!(c = tolower(*str++)))
		{
			die("Invalid hardware address");
		}
		if (isdigit(c))
		{
			val = c - '0';
		}
		else if (c >= 'a' && c <= 'f')
		{
			val = c - 'a' + 10;
		}
		else
		{
			die("Invalid hardware address");
		}
		*buf = val << 4;
		if (!(c = tolower(*str++)))
		{
			die("Invalid hardware address");
		}
		if (isdigit(c))
		{
			val = c - '0';
		}
		else if (c >= 'a' && c <= 'f')
		{
			val = c - 'a' + 10;
		}
		else
		{
			die("Invalid hardware address");
		}
		*buf++ |= val;
		if (*str == ':')
		{
			str++;
		}
	}
}
 
分享到:
评论

相关推荐

    论坛转帖工具.rar

    标题中的“论坛转帖工具.rar”表明这是一个用于在论坛之间转移帖子的软件工具,通常用于帮助用户方便地将一个论坛的帖子内容复制到另一个论坛,可能是为了分享信息、讨论或保存重要的帖子。这类工具可能包括自动抓取...

    贴吧转帖工具

    它允许用户快速地将一篇帖子从一个贴吧复制并发布到另一个贴吧,无需手动复制粘贴文字和图片。这一特性对于那些希望分享有价值信息或者在多个贴吧同步维护内容的用户来说,非常实用。转帖过程中,工具通常会自动保留...

    UBB论坛转帖圣手.exe

    UBB论坛转帖圣手.exeUBB论坛转帖圣手.exe

    转帖工具ConvertX fordiscuz7.1/7.2 修改增强版.rar

    2.新增批量替换关键词(原来是单个词语替换,可以利用这个功能删除一些网站的防转帖代码) 3.批量随机新增文字(新增内容可自定义,从而实现伪原创) 4.cookie记录替换和新增关键词(避免每次打开转帖工具都要输入繁琐的...

    编辑人员转帖去水印工具

    水印可能是他人版权的标识,也可能是不希望展示的信息,去除水印成为了一项必要的技能。本篇文章将详细探讨“编辑人员转帖去水印工具”,并介绍如何使用名为Teorex Inpaint的1.0.0.2版本的软件来实现这一目标。 ...

    【CBM666 搜集的Windows消息大全(转帖)】

    例如,当一个模块需要向另一个模块传递信息时,可以通过发送自定义消息来实现跨线程通信。 总的来说,《CBM666搜集的Windows消息大全》是一份详尽的参考资料,它涵盖了Windows编程中涉及的各种消息,对于深入理解和...

    Html2UBBMaxcj_Softii论坛专用转帖工具

    - **人人软件站.url**:这可能是一个快捷方式,指向一个网站,用户可以通过这个链接获取更多的软件信息或者下载其他资源。 - **Html2UBB**:这可能是实际的软件执行文件或库文件,用户需要运行或解压后才能使用...

    discuz X2转帖工具、采集工具

    X2转帖工具、采集工具”是针对这个平台设计的辅助软件,主要用于帮助论坛管理员或用户批量发布帖子和采集内容,提高论坛内容更新的效率。 一、批量发帖功能 1. 自动化发布:此工具可以自动化地创建和发布帖子,...

    [转帖]世界编程大赛第一名写的程序

    标题和描述中的“世界编程大赛第一名写的程序”这一知识点,实际上指向了计算机科学与编程竞赛领域的一个重要概念:即在高水平的编程比赛中,优胜者所编写的代码往往蕴含着高级算法、数据结构以及编程技巧。...

    转帖工具插件 for PHPwind 7.5 正式版.rar

    "转帖工具插件 for PHPwind 7.5 正式版" 是专门为 PHPwind 7.5 版本设计的一个功能插件,旨在提供便捷的帖子转移功能,帮助管理员或者用户将内容从一个地方轻松移动到另一个地方,而无需直接编辑论坛的原始文件。...

    转帖别人的图片比较源码

    实现了从文件中导入位图、屏幕截图、鼠标指针截图、在图片上查找子图、在图片上查找颜色等功能。在查找过程中可以设定颜色变化范围、可以从左到右从上到下查找、也可以从指定点向四周查找,版权 2009,由 yeye55 ...

    用PHP批量生成图片缩略图——活跃论坛转帖

    等比例缩放保持原图宽高比,而固定尺寸裁剪可能会导致图片变形,因此在裁剪时通常需要选择一个中心点或者根据特定规则。 现在,让我们看看压缩包中的文件: 1. `funs.php`:这可能包含了一些自定义的函数,比如图像...

    [转帖] 用C# Generator解决Hanoi塔问题

    3. **C# Generator**:这是C#的一个高级特性,允许开发者创建自定义的代码生成器。在这个案例中,生成器可能是一个模板或元编程工具,能根据输入的盘子数量自动生成对应的汉诺塔解法代码。 4. **递归算法**:在C#中...

    一键转帖功能插件 for 帝国CMS v1.0.rar

    "一键转帖功能插件 for 帝国CMS v1.0.rar" 是一个专为帝国CMS设计的扩展工具,其主要目标是简化用户在网站上分享内容的过程,提高用户体验。这个插件允许用户轻松地将网站上的文章或信息复制并转发到其他平台,如...

    转帖经典---JAVA设计模式

    1. 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 2. 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 3. 抽象工厂模式(Abstract Factory):提供...

    一键转帖功能插件 for 帝国CMS 6.0 GBK utf8 V1.0.rar

    这是为了让系统能够识别和调用这两个文件,以便实现一键转帖的功能。 2. **插入代码**:在内容页的适当位置,需要添加HTML.TXT文件中的代码。这通常是在文章内容下方或者侧边栏等显眼位置,以方便用户快速找到并...

    转帖图片提取工具 v1.0.zip

    转帖图片提取工具可以对论坛图片附件信息进行清除,只保留图片代码,操作很简单,推荐有需要转帖图片工具的朋友下载 转帖图片提取工具使用方法: 将IP138上处理过的东西复制到上方的编辑框内,点击只要图片,下面...

    【转帖】想跟黑客叫板,就不能不知道这些东西

    ARP攻击是一种在网络层实施的攻击,通过伪造ARP响应,使攻击者能够截获或篡改网络中其他设备之间的通信。这种攻击可以导致网络中断,数据泄露或被篡改。 ### 欺骗攻击 欺骗攻击是指攻击者通过冒充合法实体,诱使...

    转帖几个网站Banner的FLA源文件

    本资源包含10个不同设计风格的网站Banner的FLA源文件,对于学习和理解Flash动画及网页设计的朋友们来说,这是一个宝贵的资料库。 首先,让我们了解什么是FLA源文件。FLA(Flash Authoring)是Adobe Flash ...

Global site tag (gtag.js) - Google Analytics