⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isakmp.c

📁 mgcp协议源代码。支持多种编码:g711
💻 C
📖 第 1 页 / 共 2 页
字号:
  printf("Payload length          %d\n", ntohs(gen->length));  bp = bp + sizeof(ISAKMP_generic_hdr);  printf("Hash data:              not shown\n");  bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);}/*----------------------------------------------------------------------------**** dump_notification_payload()**** Dump a notification payload.****----------------------------------------------------------------------------*/void dump_notification_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_int8_t protocol_id, spi_size;  u_int16_t message_type;  u_int32_t doi;  u_char *old_bp;  old_bp = bp;  gen = (ISAKMP_generic_hdr *) bp;    printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Notification Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));  bp = bp + sizeof(ISAKMP_generic_hdr);  doi = EXTRACT_32BITS(bp);  bp = bp + 4;  printf("DOI:                    %d\n", doi);  protocol_id = *bp;  bp++;  printf("Protocol ID:            %d ", protocol_id);  switch( protocol_id )    {    case 0:      printf("(reserved)");      break;    case 1:      printf("(protocol ISAKMP)");      break;    case 2:      printf("(protocol IPSEC_AH)");      break;    case 3:      printf("(protocol IPSEC_ESP)");      break;    case 4:      printf("(protocol IPCOMP)");      break;    default:      printf("(unknown)");      break;    }  printf("\n");    spi_size = *bp;  bp++;  printf("SPI size:               %d\n", spi_size);  message_type = EXTRACT_16BITS(bp);  bp = bp + 2;  printf("Message type:           %d ", message_type);  switch(message_type)    {    case 1:    	printf("(invalid payload type)");    	break;    case 2:    	printf("(DOI not supported)");    	break;    case 3:    	printf("(situation not supported)");    	break;    case 4:    	printf("(invalid cookie)");    	break;    case 5:    	printf("(invalid major version)");    	break;    case 6:    	printf("(invalid minor version)");    	break;    case 7:    	printf("(invalid exchange type)");    	break;    case 8:    	printf("(invalid flags)");    	break;    case 9:    	printf("(invalid message ID)");    	break;    case 10:    	printf("(invalid protocol ID)");    	break;    case 11:    	printf("(invalid SPI)");    	break;    case 12:    	printf("(invalid transform ID)");    	break;    case 13:    	printf("(attributes not supported)");    	break;    case 14:    	printf("(no proposal chosen)");    	break;    case 15:    	printf("(bad proposal syntax)");    	break;    case 16:    	printf("(payload malformed)");    	break;    case 17:    	printf("(invalid key information)");    	break;    case 18:    	printf("(invalid ID information)");    	break;    case 19:    	printf("(invalid cert encoding)");    	break;    case 20:    	printf("(invalid certificate)");    	break;    case 21:    	printf("(cert type unsupported)");    	break;    case 22:    	printf("(invalid cert authority)");    	break;    case 23:    	printf("(invalid hash information)");    	break;    case 24:    	printf("(authentication failed)");    	break;    case 25:    	printf("(invalid signature)");    	break;    case 26:    	printf("(address notification)");    	break;    case 27:    	printf("(notify SA lifetime)");    	break;    case 28:    	printf("(certificate unavailable)");    	break;    case 29:    	printf("(unsupported exchange type)");    	break;    case 16384:    	printf("(connected)");    	break;    case 24576:      printf("(responder lifetime)");      break;    case 24577:      printf("(replay status)");      break;    case 24578:      printf("(initial contact)");      break;    default:      printf("(unknown)");      break;    }  printf("\n");  printf("SPI:                    not shown\n");  bp = bp + spi_size;  /*   * Here, the notification data length depends on the message type.   * They really should have defined a length for this field.  We   * have to get a bit ugly in order to do this right...   */  switch(message_type)    {    case 24576:      break;    case 24577:      {	u_int32_t data;		data = EXTRACT_32BITS(bp);	bp = bp + 4;	printf("Notification data        %d ", data);	switch(data)	  {	  case 0: 	    printf("(replay detection disabled)");	    break;	  case 1:	    printf("(replay detection enabled)");	    break;	  default:	    printf("(unknown)");	    break;	  }	printf("\n");      }      break;    case 24578:      printf("(initial contact)"); /* no data field */      break;    default:      printf("(unknown)");      break;    }  /*   * Move pointer to end of this header    */  bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);}/*----------------------------------------------------------------------------**** dump_transform_payload()**** Dump a transform payload.****----------------------------------------------------------------------------*/void dump_transform_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_int8_t trans_id, spi_size;  u_int32_t trans;  u_char *old_bp;  old_bp = bp;  gen = (ISAKMP_generic_hdr *) bp;    printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Transform Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));  bp = bp + sizeof(ISAKMP_generic_hdr);  trans = EXTRACT_32BITS(bp);  bp = bp + 4;  printf("Transform Number:       %d\n", trans);  trans_id = *bp;  bp++;  printf("Transform ID:            %d ", trans_id);  /* NOTE: This should be conditional so that we don't print both the AH    * and ESP transform IDs at the same time.  Need to add IPCOMP also.   */       switch( trans_id )    {    case 0:      printf("(reserved)");      break;    case 1:      printf("(AH reserved) or (ESP DES IV64)");      break;    case 2:      printf("(AH MD5) or (ESP DES)");      break;    case 3:      printf("(AH SHA1) or (ESP 3DES)");      break;    case 4:      printf("(AH DES)");      break;    case 5:      printf("(protocol IPCOMP)");      break;    default:      printf("(unknown)");      break;    }  printf("\n");    spi_size = *bp;  bp++;  printf("Reserved:               %d\n", spi_size);  /*   * Move pointer to end of this header    */  bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);}/*----------------------------------------------------------------------------**** dump_keyexchange_payload()**** Dump a key exchange payload.****----------------------------------------------------------------------------*/void dump_keyexchange_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_char *old_bp;  gen = (ISAKMP_generic_hdr *) bp;  old_bp = bp;  printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Key Exchange Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));  bp = bp + sizeof(ISAKMP_generic_hdr);  printf("Key exchange data:      ");    print_char2hex(bp, ntohs(gen->length) - 4);  bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);}/*----------------------------------------------------------------------------**** dump_identification_payload()**** Dump an identification payload.****----------------------------------------------------------------------------*/void dump_identification_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_char *old_bp;  u_int8_t id_type;  u_int32_t doi_data;  gen = (ISAKMP_generic_hdr *) bp;  old_bp = bp;  printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Identification Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));  bp = bp + sizeof(ISAKMP_generic_hdr);  id_type = *bp;  bp ++;  printf("ID type:                %d ", id_type);  switch(id_type)    {    case 0:      printf("(reserved)");      break;    case 1:      printf("(IPv4 address)");      break;    case 2:       printf("(FQDN)");      break;    case 3:      printf("(user FQDN)");      break;    case 4:      printf("(IPv4 address subnet)");      break;    case 5:      printf("(IPv6 address)");      break;    case 6:      printf("(IPv6 address subnet)");      break;    case 7:      printf("(IPv4 address range)");      break;    case 8:      printf("(IPv6 address range)");      break;    case 9:       printf("(DER coding of ASN.1 X.500 dist. name)");      break;    case 10:      printf("(DER coding of ASN.1 X.500 gen. name)");      break;    case 11:      printf("(key ID)");      break;    }  printf("\n");  /*   * Read next 3 bytes    */  doi_data = *bp;  doi_data = doi_data << 8;  doi_data += *(bp+1);  doi_data = doi_data << 8;  doi_data += *(bp+1);  bp = bp + 3;  printf("DOI ID data:           %d\n", doi_data);  switch(id_type)    {    case 0:      break;    case 1:            break;    case 2:       printf("(FQDN)");      break;    case 3:      printf("(user FQDN)");      break;    case 4:      printf("(IPv4 address subnet)");      break;    case 5:      printf("(IPv6 address)");      break;    case 6:      printf("(IPv6 address subnet)");      break;    case 7:      printf("(IPv4 address range)");      break;    case 8:      printf("(IPv6 address range)");      break;    case 9:       printf("(DER coding of ASN.1 X.500 dist. name)");      break;    case 10:      printf("(DER coding of ASN.1 X.500 gen. name)");      break;    case 11:      printf("(key ID)");      break;    }    bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);}/*----------------------------------------------------------------------------**** dump_nonce_payload()**** Dump a nonce payload.****----------------------------------------------------------------------------*/void dump_nonce_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_char *old_bp;    gen = (ISAKMP_generic_hdr *) bp;  old_bp = bp;    printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Nonce Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));    bp = bp + sizeof(ISAKMP_generic_hdr);    printf("Nonce data:             ");  print_char2hex(bp, ntohs(gen->length) - 4);    bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);  }/*----------------------------------------------------------------------------**** dump_signature_payload()**** Dump a signature payload.****----------------------------------------------------------------------------*/void dump_signature_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_char *old_bp;    gen = (ISAKMP_generic_hdr *) bp;  old_bp = bp;    printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Signature Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));    bp = bp + sizeof(ISAKMP_generic_hdr);    printf("Signature data:             ");  print_char2hex(bp, ntohs(gen->length) - 4);    bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);  }/*----------------------------------------------------------------------------**** dump_vendorid_payload()**** Dump a vendor ID payload.****----------------------------------------------------------------------------*/void dump_vendorid_payload(u_char *bp){  ISAKMP_generic_hdr *gen;  u_char *old_bp;    gen = (ISAKMP_generic_hdr *) bp;  old_bp = bp;    printf("-----------------------------------------------------------------\n");  printf("                        ISAKMP Vendor ID Header\n");  printf("-----------------------------------------------------------------\n");  printf("Next payload:           %d ", gen->next_payload);  dump_next_payload(gen->next_payload);  printf("Reserved:               %d\n", gen->reserved);  printf("Payload length          %d\n", ntohs(gen->length));    bp = bp + sizeof(ISAKMP_generic_hdr);    printf("Vendor ID:              ");  print_char2hex(bp, ntohs(gen->length) - 4);    bp = old_bp + ntohs(gen->length);  determine_next_payload(gen->next_payload, bp);  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -