zoukankan      html  css  js  c++  java
  • ARPSpoofing教程(二)

       1:  #include"pcap.h"
       2:  #include<WinSock.h>
       3:  #define IPTOSBUFFERS    12
       4:  char *iptos(u_long in){
       5:      static char output[IPTOSBUFFERS][3*4+3+1];
       6:      static short which;
       7:      u_char *p=(u_char*)&in;
       8:      which=(which+1==IPTOSBUFFERS?0:which+1);
       9:      sprintf(output[which],"%d. %d. %d. %d",p[0],p[1],p[2],p[3]);
      10:      return output[which];
      11:  }
      12:  char* ip6tos(struct sockaddr *sockaddr,char*address,int addrlen){
      13:      socklen_t sockaddrlen=sizeof(sockaddr_in6);
      14:      if(getnameinfo(sockaddr,sockaddrlen,address,addrlen,NULL,0,NI_NUMERICHOST)!=0)
      15:          address=NULL;
      16:      return address;
      17:  }
      18:  void ifprint(pcap_if_t *d){
      19:   
      20:      char ip6str[128];
      21:   
      22:      //device name
      23:      printf("Device Name: %s
    ",d->name);
      24:      printf("Description: %s
    ",d->description);
      25:   
      26:      //loopback address
      27:      if(d->flags&&PCAP_IF_LOOPBACK)
      28:          printf("loopback: yes
    ");
      29:      else
      30:          printf("loopback: yes
    ");
      31:   
      32:      for(pcap_addr_t *a=d->addresses;a;a=a->next){
      33:          printf("Address Family: %d
    ",a->addr->sa_family);
      34:          switch(a->addr->sa_family){
      35:          case AF_INET:
      36:              printf("Address Family: AF_INTET
    ");
      37:              if(a->addr)
      38:                  printf("Address: %s
    ",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));
      39:              if(a->netmask)
      40:                  printf("Netmask: %s
    ",iptos((((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)));
      41:              if(a->broadaddr)
      42:                  printf("Broadcast Address: %s
    ",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr));
      43:              if(a->dstaddr)
      44:                  printf("Destination Address: %s
    ",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr));
      45:              break;
      46:          case AF_INET6:
      47:              printf("Address Family Name: AF_INET6
    ");
      48:              if(a->addr)
      49:                  printf("Address: %s
    ",ip6tos(a->addr,ip6str,sizeof(ip6str)));
      50:              break;
      51:          default:
      52:              printf("Adress Family Name: Unknown
    ");
      53:                  break;
      54:          }
      55:      }
      56:  }
      57:   
      58:   
      59:  int main(){
      60:      pcap_if_t *all_devs,*d;
      61:   
      62:      char errBuf[PCAP_ERRBUF_SIZE+1],source[PCAP_ERRBUF_SIZE+1];
      63:      printf("Enter the device you want to list:
    ");
      64:      printf("rpcap://==>list interface int the machine
    ");
      65:      printf("rpcap://hostname:port==>list interface in a remote machine
    ");
      66:      printf("file ://foldname==>list all pcap files in the give folder
    ");
      67:      printf("Enter your choice: ");
      68:      fgets(source ,PCAP_ERRBUF_SIZE,stdin);
      69:      source[PCAP_ERRBUF_SIZE]='';
      70:   
      71:   
      72:      //get local device list
    
      73:      if(pcap_findalldevs_ex(source,NULL,&all_devs,errBuf)==-1){
      74:          fprintf(stderr,"ERROR:%s
    ",errBuf);
      75:          exit(1);
      76:      }
      77:   
      78:      //print list
      79:      for(pcap_if_t *d=all_devs;d;d=d->next){
      80:          ifprint(d);
      81:      }
      82:      
      83:      //fianlly free any resource
      84:      pcap_freealldevs(all_devs);
      85:  }

    试验结果:

    image

  • 相关阅读:
    Windows 科研软件推荐
    有关Python 包 (package) 的基本知识
    《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
    Coursera助学金申请模板
    《Using Databases with Python》 Week2 Basic Structured Query Language 课堂笔记
    Jupyter 解决单个变量输出问题
    解决 pandas 中打印 DataFrame 行列显示不全的问题
    《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
    缓存击穿及解决方案
    jvm垃圾收集器
  • 原文地址:https://www.cnblogs.com/ZJUT-jiangnan/p/3713034.html
Copyright © 2011-2022 走看看