Ejemplo n.º 1
0
int main()
{
    pcap_file_header  pfh;
    pcap_header  ph;
    int count = 0;
    unsigned char * buff = NULL;
    unsigned int readSize = 0;
    int ret = 0;

    buff = (unsigned char *)malloc(MAX_ETH_FRAME);
    FILE *fp = fopen("./test", "rb");

    if (fp == NULL) {
        fprintf(stderr, "Open file error.\n");
        return 0;
    }

    int headerlen = sizeof(pcap_file_header);

    //read pcap_file_header
    fread(&pfh, sizeof(pcap_file_header), 1, fp);

    prinfPcapFileHeader(&pfh);

    unsigned int sec_timestamp = 0;
    unsigned int m_timestamp = 0;
    unsigned int sleep_timestamp = 0;
    unsigned int sleep_timestamp_sec = 0;
    for (count = 1;; count++)
    {
        if(parse_pcap( fp, buff)<0)
            break;
    }

    if (buff) {
        free(buff);
        buff = NULL;
    }
    if (fp) {
        fclose(fp);
        fp = NULL;
    }
    return 0;
}
Ejemplo n.º 2
0
/*this runs stuff */
int main(int argc,char **argv)
{

   int selected;
   //whether or not to print info to screen, 1 - yes, 0 - no.
   int PRINT_TO_SCREEN;  
   if (argc<4)
   {
      usage(argv[0]);
      exit(0);
   }
   PRINT_TO_SCREEN=atoi(argv[3]);
   printf("Reading %s\nWritting to %s\n",argv[1],argv[2]);
   printf("Output HCAP file? 1- yes, 0 - no\n");
   int OUTPUT_HCCAP_FLAG;
   OUTPUT_HCCAP_FLAG=getchar();

   //scanf("%d ",&OUTPUT_HCCAP_FLAG);

   if (argv[4])
   {
      if (strcmp(argv[4],"-b")==0) incorrect=1;
      if (strcmp(argv[4],"-g")==0) getbest=1;
      if (strcmp(argv[4],"-c")==0) csv=1;
   }
   if (argv[5])
   {
      if (strcmp(argv[5],"-b")==0) incorrect=1;
      if (strcmp(argv[5],"-g")==0) getbest=1;
      if (strcmp(argv[5],"-c")==0) csv=1;
   }
   if (argv[6])
   {
      if (strcmp(argv[6],"-b")==0) incorrect=1;
      if (strcmp(argv[6],"-g")==0) getbest=1;
      if (strcmp(argv[6],"-c")==0) csv=1;
   }

   parse_pcap(argv[1]);
   rate_hshakes();

   if (csv==1)
   {
      print_hshakes_csv();
      exit(1);
   }
   else if (getbest==1)
   {
      print_hshakes();
      selected=get_best_hshake();
      printf("Getting best handshake\n");
      if (selected==-1) 
      {
         printf("Quitting!\n");
         exit(1);
      }
      //printf("Chosen handshake #%d\n",selected);
   }
   else
   {
      while (selected<0)
      {
         print_hshakes();
         printf("Getting best handshake\n");
         //printf("Enter an ID to include into the output hcap file: ");
         //fgets(buf,255,stdin);
         selected=get_best_hshake();
         //selected=atoi(buf);
         if (hshake2[selected].good<1) 
         {
            printf("Bad ID, try again!\n");
            selected=-1;
         }
      }
   }

   if (hshake2[selected].good>0)
   {
      //write_out_hshakes(int id,char* filename1, int printH, int printScreen)
      write_out_hshakes(selected,argv[2],OUTPUT_HCCAP_FLAG,PRINT_TO_SCREEN);
   }
   else
   {
      printf("No good .cap file found\n");
   }
   return 0;
}
Ejemplo n.º 3
0
int main (int argc, char **argv)
{
	if (argc != 2) {
		perror("[\033[31m*\033[0m]Error! Wrong Arguments\n");
		// \033[31m - окрашивает в красный вывод
		// \033[0m - окрашивает вывод в цвет по умолчанию
		usage();
		exit(EXIT_FAILURE);
	}
	else {
		printf("[\033[32m*\033[0m] Arguments ok\n");
		// \033[32m - окрашивает в зеленый вывод
		// \033[0m - окрашивает вывод в цвет по умолчанию
	}


	int wait_socket = -1; // сокет для приема клиентов
	wait_socket = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
	// AF_INET - использование TCP/IP (IPv4)
	// SOCK_RAW - указывает на использование сырых сокетов
	// IPPROTO_UDP - использование протокола транспортного уровня UDP

	if (wait_socket < 0) {
		perror("[\033[31m*\033[0m] Error! Can't create socket");
		exit(EXIT_FAILURE);
	}
	else {
		printf("[\033[32m*\033[0m] Recv socket ok\n");
	}

	int sock = -1; // сокет для приема клиентов
	sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
	// AF_INET - использование TCP/IP (IPv4)
	// SOCK_RAW - указывает на использование сырых сокетов

	if (socket < 0) {
		perror("[\033[31m*\033[0m] Error! Can't create socket");
		exit(EXIT_FAILURE);
	}
	else {
		printf("[\033[32m*\033[0m] Send socket ok\n");
	}
	char read_sock_buf[DEF_PACK_BUF];
	while(1)
	{
		u_int32_t ip_cliaddr = recv_udp_raw(wait_socket, 0, 0, SERVER_PORT, read_sock_buf, DEF_PACK_BUF);
		if (ip_cliaddr == 0) {
			perror("[\033[31m*\033[0m] Error! Recieve package\n");
			exit(EXIT_FAILURE);
		}
		else {
			printf("[\033[32m*\033[0m] Client ok\n");
		}

		u_int32_t *ip_req = (u_int32_t *) read_sock_buf;
	
		char data[sizeof(struct stat)];
		struct stat *this_stat = (struct stat *) data;

		if (parse_pcap(this_stat, argc, argv, *ip_req) == -1)
			exit (EXIT_FAILURE);

		if (sock < 0) {
			perror("[\033[31m*\033[0m] Error! Can't create socket");
			exit(EXIT_FAILURE);
		}
		else {
			printf("[\033[32m*\033[0m] Send socket ok\n");
		}

		if (send_udp_raw (sock, inet_addr(SERVER_ADDRESS), ip_cliaddr, CLIENT_PORT, SERVER_PORT, data, sizeof(struct stat)) < 0 ) {
    		perror("[\033[31m*\033[0m] Error! Package not recieve\n");
    		exit(EXIT_FAILURE);
    	}
		
		printf("Processed %d packets and %u MBytes, in %d files\n", this_stat->pkts_count, this_stat->pkts_length, argc-1);
  		printf("Min Speed: %f, Max Speed: %f, Average Speed: %f\n", this_stat->min_speed, this_stat->max_speed, this_stat->aver_speed);

		printf("\n");
	}
	exit(EXIT_SUCCESS);
}
Ejemplo n.º 4
0
int main(int argc, char *argv[])
{
	FILE *fp;
	char *p;
	char *outputfile = NULL;
	int len;
	char buff[256];
	int ret;
	int ch;
	struct pcap_file_header pfw;
	struct DNSdataControl c;

	memset((void *)&c, 0, sizeof(&c));

	while ((ch = getopt(argc, argv, "Ao:el:4:6:")) != -1) {
	switch (ch) {
	case 'A':
		debug |= FLAG_MODE_PARSE_ANSWER;
		break;
	case 'e':
		flag_exact_match = 1;
		break;
	case 'o':
		outputfile = strdup(optarg);
		break;
	case 'l':
		doms[ndoms].dom = strdup(optarg);
		doms[ndoms].len = strlen(optarg);
		ndoms++;
		break;
	case '4':
		if (inet_aton(optarg, (struct in_addr *)&client_ipv4) == 0)
			err(1, "bad IPv4 address: %s", optarg);
		check_v4 = 1;
		break;
#if defined(AF_INET6) && defined(HAVE_INET_PTON)
	case '6':
		if (inet_pton(AF_INET6, optarg, client_ipv6) != 1)
			err(1, "bad IPv6 address: %s", optarg);
		check_v6 = 1;
		break;
#endif
	case '?':
	default:
		usage();
	}}
	argc -= optind;
	argv += optind;

	c.callback = callback;
	c.otherdata = NULL;
	c.debug = FLAG_IGNOREERROR | FLAG_MODE_PARSE_QUERY;

	if (outputfile == NULL) { printf("#Error:No outputfilename\n"); exit(1); };
	if ((wfp = fopen(outputfile, "w")) == NULL) {
		printf("#Werror:Cannot write %s", outputfile);
		exit(1);
	}
	argv++;
	argc--;

	pfw.magic = 0xa1b2c3d4;
	pfw.version_major = 2;
	pfw.version_minor = 4;
	pfw.thiszone = 0;
	pfw.sigfigs = 0;
	pfw.snaplen = 1500;
	pfw.linktype = DLT_IP;
	fwrite(&pfw, sizeof(pfw), 1, wfp);

	while (*argv != NULL) {
		if (argc > 1) fprintf(stderr, "Loading %s\n", *argv);
		// fflush(stderr);
		ret = parse_pcap(*argv, &c);
		if (ret != ParsePcap_NoError) {
			printf("#Error:%s:%s\n", parse_pcap_error(ret), *argv);
		}
		argv++;
	}
	fclose(wfp);
	return 0;
}