Esempio n. 1
0
File: ht.c Progetto: taysom/tau
STATIC void node_dump(Linear_s *t, Blknum_t blknum, int indent)
{
	Buf_s	*buf;
	Node_s	*node;
	Blknum_t overflow;

	if (!blknum) return;
	buf = t_get(t, blknum);
	node = buf->d;
	Hrec_s	rec;
	unint	i;

	if (Dump_buf) {
		pr_buf(buf, indent);
	}
	pr_head(node, indent);
	for (i = 0; i < node->numrecs; i++) {
		rec = get_rec(node, i);
		pr_indent(indent);
		printf("%ld. ", i);
		rec_dump(rec);
	}
	overflow = node->overflow;
	buf_put(&buf);
	if (overflow) {
		node_dump(t, overflow, indent+1);
	}
}
Esempio n. 2
0
void prof_pmk(char *essid)
{
  TIME_STRUCT p1,p2;

  char key[16][128];
  unsigned char pmk_sol[16][40];
  unsigned char pmk_fast[16][40];

  int i,j;
  for(i=0;i<16;i++)
    {
      strcpy(key[i],"atest");
      key[i][0]+=i;
    }

  p1 = t_start();
  for(i=0;i<16;i++)
    calc_pmk(key[i],essid,pmk_sol[i]); //key값과 essid로부터 pmk 값을 계산함
  t_end(&p1);

  p2 = t_start();
  calc_16pmk(key,essid,pmk_fast);
  t_end(&p2);

  //diff
  for(i=0;i<16;i++)
    {
      if(memcmp(pmk_sol[i],pmk_fast[i],sizeof(pmk_sol[i])) != 0)
	{
	  printf("* %d wrong case (key:%s)\n",i,key[i]);
	  dump_key("pmk_sol",pmk_sol[i],sizeof(pmk_sol[i]));
	  dump_key("pmk_fst",pmk_fast[i],sizeof(pmk_fast[i]));	  
	}
    }  
  printf("original : %0.2lf ms\n",t_get(p1)/1000);
  printf("simd ver : %0.2lf ms\n",t_get(p2)/1000);
  printf("performance : x%0.2lf\n",t_get(p1)/t_get(p2));
}
Esempio n. 3
0
void crack_wpa(char *fn)
{
  hccap_t hc;
  int res, i, itr;

  unsigned char pmk[128];

  unsigned char pke[100];
  unsigned char ptk[80];
  unsigned char mic[20];

  char key[128]; // passphase 키값
  int keylen;

  memset(key,0,sizeof(key));
  strcpy(key,"dekdekdek");

  keylen = strlen(key);
  // load from file
  if((res = hccap_load(fn,&hc)))
    {
      printf("hashcat file load failed! code : %d\n",res);
      return ;
    }
  
  memcpy( pke,"Pairwise key expansion", 23);
  if(memcmp(hc.mac2,hc.mac1,6) < 0) {
    memcpy( pke + 23, hc.mac2, 6);
    memcpy( pke + 29, hc.mac1,6 );
  } else {
    memcpy(pke + 23, hc.mac1, 6);
    memcpy(pke + 29, hc.mac2, 6);
  }
  
  if( memcmp( hc.nonce1,hc.nonce2, 32) < 0 ) {
    memcpy(pke + 35, hc.nonce1,32);
    memcpy(pke + 67, hc.nonce2,32);
  }
  else {
    memcpy(pke + 35, hc.nonce2,32);
    memcpy(pke + 67, hc.nonce1,32);    
  }

  #pragma omp parallel
  #pragma omp master
  printf("Initializing ... %d/%d threads\n",omp_get_num_threads(),omp_get_max_threads());


   prof_pmk(hc.essid);
  return;
  //#pragma omp parallel for private(i) shared(key,hc,pmk,pke,mic)

  {
    char key[16][128];
    unsigned char pmk_sol[16][40];
    unsigned char pmk_fast[16][40];

    TIME_STRUCT p1;

    int i,j;
    for(i=0;i<16;i++)
      {
	strcpy(key[i],"atest");
	key[i][0]+=i;
      }
    p1 = t_start();
#pragma omp parallel for
    for(itr=0;itr<16000;itr+=16)
      {
	calc_16pmk(key,hc.essid,pmk_fast); //key값과 essid로부터 pmk 값을 계산함
	//t_end(&p1);

	//      p2 = t_start();
	for(i=0;i<4;i++)
	  {
	    pke[99] = i;
	    HMAC(EVP_sha1(), pmk, 32, pke, 100, ptk + i * 20, NULL);
	  }
      
	if(hc.keyver == 1)
	  HMAC(EVP_md5(), ptk, 16,hc.eapol,hc.eapol_size,mic,NULL);
	else
	  HMAC(EVP_sha1(), ptk, 16, hc.eapol,hc.eapol_size,mic,NULL);
      
	//      show_wpa_stats(key,keylen,pmk,ptk,mic);
      
	if(memcmp(mic,hc.keymic,16) == 0)
	  {
	    //	  printf("success\n");
	    //	  return ;
	  }
	//      t_end(&p2);
      }
    t_end(&p1);
    printf("time : %0.2lf ms\n",t_get(p1)/1000);
  }
  //  printf("failed\n");
  return;
}