예제 #1
0
static void 
md5_50_bench(void) {
  uint8_t *buf;
  unsigned int nrprocessed = 0;
  clock_t startTime, endTime;
  int i;

  buf = calloc(16, sizeof(uint8_t));
  md5_50_init(16);
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    md5_50(buf, 16);
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("MD5_50 (fast):\t", nrprocessed, &startTime, &endTime);

  buf[0] = 0;
  nrprocessed = 0;
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    for(i=0; i<50; i++) { md5(buf, 16, buf); }
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("MD5_50 (slow):\t", nrprocessed, &startTime, &endTime);

  free(buf);
}
예제 #2
0
static void
sha256_bench(void) {
  uint8_t *buf;
  uint8_t hash[32];
  unsigned int nrprocessed = 0;
  clock_t startTime, endTime;

  buf = calloc(COMMON_SHA256_SLOW_SIZE, sizeof(uint8_t));

  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    sha256f(buf, COMMON_SHA256_SIZE, hash);
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("SHA256 (fast):\t", nrprocessed, &startTime, &endTime);

  buf[0] = 0;
  nrprocessed = 0;
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    sha256(buf, COMMON_SHA256_SLOW_SIZE, hash);
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("SHA256 (slow):\t", nrprocessed, &startTime, &endTime);
  free(buf);
}
예제 #3
0
static void
rc4_bench(void) {
  uint8_t *enckey;
  uint8_t match[32] = {0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD,
		       0xDE, 0xAD, 0xBE, 0xAD};
  uint8_t cipher[32] = {0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD,
			0xBE, 0xAD, 0xDE, 0xAD};
  unsigned int nrprocessed = 0;
  clock_t startTime, endTime;

  enckey = calloc(16, sizeof(uint8_t));

  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    rc4Match40b(enckey, cipher, match);
    enckey[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("RC4 (40, static):", nrprocessed, &startTime, &endTime);
  setrc4DecryptMethod(40);
  nrprocessed = 0;
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    rc4Decrypt(enckey, cipher, 3, match);
    enckey[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("RC4 (40, no check):", nrprocessed, &startTime, &endTime);
 
  setrc4DecryptMethod(128);
  nrprocessed = 0;
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    rc4Decrypt(enckey, cipher, 3, match);
    enckey[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean("RC4 (128, no check):", nrprocessed, &startTime, &endTime);

  free(enckey);
}
예제 #4
0
static void pdf_128b_bench(int numThreads, const unsigned int numCpuCores) {
    clock_t startTime, endTime;
    struct timeval wallTimeStart, wallTimeEnd;
    uint8_t o_string[32] = {0xcf, 0xeb, 0x57, 0x1b, 0xa4, 0x56, 0x35, 0x19,
                            0x4e, 0x09, 0x95, 0x24, 0x23, 0xf3, 0x9b, 0x81,
                            0x05, 0xae, 0xbc, 0xb2, 0x8c, 0x18, 0xd2, 0xbb,
                            0xff, 0x00, 0xc9, 0xaa, 0x3f, 0x36, 0xe3, 0x13};
    uint8_t u_string[32] = {0x72, 0xf6, 0x56, 0x9e, 0xda, 0x7d, 0x20, 0x1a,
                            0x10, 0x6d, 0x8a, 0x5b, 0xfa, 0xb2, 0xe9, 0xc0,
                            0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41,
                            0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08};
    uint8_t fileid[16] = {0xc9, 0xaa, 0x55, 0xc3, 0x6f, 0x3f, 0x5e, 0x84,
                          0x0d, 0x3d, 0x96, 0x8b, 0x97, 0xdb, 0xb2, 0xfe};
    EncData e = {
            handler,
            o_string,
            u_string,
            fileid,
            true,
            16, 1, 4, 128, -2359344, 3, 2
    };

    initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1);

    startTime = clock();
    runCrackRev3();
    endTime = clock();
    print_and_clean("PDF (128, user):", getNrProcessed(), &startTime, &endTime);

    initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1);

    startTime = clock();
    runCrackRev3_o();
    endTime = clock();

    print_and_clean("PDF (128, owner):", getNrProcessed(), &startTime, &endTime);

    initPDFCrack(&e, password, false, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1);

    startTime = clock();
    runCrackRev3_of();
    endTime = clock();

    print_and_clean("PDF (128, owner, fast):", getNrProcessed(), &startTime, &endTime);
    if (numThreads > 0) {
        printf("\n");
        printf("Benchmark (Wall time):\tAverage Speed (passwords / second):\n");

        initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 5, true, numThreads, numCpuCores, 1, 1);
        gettimeofday(&wallTimeStart, NULL);
        runCrackMultiThreads();
        gettimeofday(&wallTimeEnd, NULL);
        char buf[32];
        sprintf(buf, "PDF (128, user, %i threads):", numThreads);
        print_and_clean_wall_time(buf, getNrProcessed(), wallTimeStart, wallTimeEnd);
    }
}
예제 #5
0
static void
pdf_40b_bench(void) {
  clock_t startTime, endTime;
  uint8_t o_string[32] =   { 0xb7, 0x81, 0xc8, 0x3d, 0x93, 0x79, 0x21, 0xcc,
			     0x0f, 0x3d, 0x40, 0xed, 0x18, 0xe7, 0x7f, 0x7e,
			     0xc0, 0x15, 0xb1, 0x63, 0xf5, 0xc8, 0x34, 0xe0,
			     0x54, 0x37, 0x41, 0x29, 0xe7, 0xc5, 0x1d, 0xe3 };
  uint8_t u_string[32] =   { 0x61, 0x74, 0x7c, 0x5c, 0xb5, 0x38, 0x3d, 0xdd,
			     0x6f, 0xcb, 0xb2, 0xf2, 0xfe, 0xe3, 0x34, 0x8d,
			     0x81, 0xe2, 0x49, 0x99, 0xc4, 0x14, 0xf6, 0x6f,
			     0xd0, 0x0f, 0x97, 0xe8, 0xb8, 0x29, 0xe6, 0x27 };
  uint8_t fileid[16] =     { 0x21, 0x76, 0x36, 0x66, 0x67, 0xf0, 0x86, 0xd5,
			     0x09, 0x88, 0xc3, 0xa7, 0xe9, 0x3a, 0x92, 0xca };
  EncData e = {
    handler,
    o_string,
    u_string,
    fileid,
    true,
    16, 1, 4, 40, -64, 2, 1
  };

  initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 5, true);

  startTime = clock();
  runCrackRev2();
  endTime = clock();

  print_and_clean("PDF (40, user):\t",getNrProcessed(),&startTime, &endTime);

  initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 5, true);

  startTime = clock();
  runCrackRev2_o();
  endTime = clock();

  print_and_clean("PDF (40, owner):",getNrProcessed(), &startTime, &endTime);
  initPDFCrack(&e, password, false, NULL, Generative, NULL, charset,0, 5,true);

  startTime = clock();
  runCrackRev2_of();
  endTime = clock();

  print_and_clean("PDF (40, owner, fast):",
		  getNrProcessed(), &startTime, &endTime);
}
예제 #6
0
static void
pdf_128b_bench(void) {
  clock_t startTime, endTime;
  uint8_t o_string[32] =   { 0xcf, 0xeb, 0x57, 0x1b, 0xa4, 0x56, 0x35, 0x19,
			     0x4e, 0x09, 0x95, 0x24, 0x23, 0xf3, 0x9b, 0x81,
			     0x05, 0xae, 0xbc, 0xb2, 0x8c, 0x18, 0xd2, 0xbb,
			     0xff, 0x00, 0xc9, 0xaa, 0x3f, 0x36, 0xe3, 0x13 };
  uint8_t u_string[32] =   { 0x72, 0xf6, 0x56, 0x9e, 0xda, 0x7d, 0x20, 0x1a,
			     0x10, 0x6d, 0x8a, 0x5b, 0xfa, 0xb2, 0xe9, 0xc0,
			     0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41,
			     0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08 }; 
  uint8_t fileid[16] =     { 0xc9, 0xaa, 0x55, 0xc3, 0x6f, 0x3f, 0x5e, 0x84,
			     0x0d, 0x3d, 0x96, 0x8b, 0x97, 0xdb, 0xb2, 0xfe };
  EncData e = {
    handler,
    o_string,
    u_string,
    fileid,
    true,
    16, 1, 4, 128, -2359344, 3, 2
  };

  initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 4, true);

  startTime = clock();
  runCrackRev3();
  endTime = clock();
  print_and_clean("PDF (128, user):", getNrProcessed(), &startTime, &endTime);

  initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 4, true);

  startTime = clock();
  runCrackRev3_o();
  endTime = clock();

  print_and_clean("PDF (128, owner):", getNrProcessed(), &startTime, &endTime);

  initPDFCrack(&e,password, false, NULL, Generative, NULL, charset, 0, 4,true);

  startTime = clock();
  runCrackRev3_of();
  endTime = clock();

  print_and_clean("PDF (128, owner, fast):", 
		  getNrProcessed(), &startTime, &endTime);
}
예제 #7
0
static void md5_bench(int numThreads, const unsigned int numCpuCores) {
    uint8_t *buf;
    uint8_t digest[16];
    unsigned int nrprocessed = 0;
    clock_t startTime, endTime;

    buf = calloc(COMMON_MD5_SIZE, sizeof(uint8_t));

    alarm(BENCHINTERVAL);
    startTime = clock();
    while (!finished) {
        md5(buf, COMMON_MD5_SIZE, digest);
        buf[0]++;
        nrprocessed++;
    }
    endTime = clock();
    print_and_clean("MD5:\t\t", nrprocessed, &startTime, &endTime);
    free(buf);
}