Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- #include <xmmintrin.h>
- #include <emmintrin.h>
- //#define RANDGEN
- //#define TEST
- #ifndef TEST
- //#define RANDOM1
- //#define RANDOM2
- #endif
- #define MAX_RANDS 2048
- typedef unsigned char u8;
- typedef unsigned short u16;
- typedef unsigned int u32;
- typedef unsigned long long u64;
- typedef u16 uxx;
- u8 carry;
- uxx acc;
- u8 rand_seed[2];
- uxx key[4];
- __declspec(align(16)) uxx xor_table[128];
- u8 decoded_handler[128];
- uxx rands[65536][MAX_RANDS];
- u32 rands_cur_seed, rands_cur_pos;
- #define rnd_calc() { \
- register int seed; \
- rand_seed[1] += rand_seed[0]; \
- seed = *(u16*)&rand_seed[0] + 0x2A89; \
- *(u16*)&rand_seed[0] = seed & 0xFFFF; \
- seed = *(u16*)&rand_seed[0] + 0x4321 + ((seed >> 16) & 1); \
- *(u16*)&rand_seed[0] = seed & 0xFFFF; \
- }
- #define rnd() (rands[rands_cur_seed][rands_cur_pos--])
- #define rndd(a) (*(u32*)&rands[rands_cur_seed][rands_cur_pos - (a)])
- #define rndq(a) (*(u64*)&rands[rands_cur_seed][rands_cur_pos - (a)])
- #define rndx(a) (*(__m128i*)&rands[rands_cur_seed][rands_cur_pos - (a)])
- #define srnd(seed) { rands_cur_pos = MAX_RANDS - 1; rands_cur_seed = (seed); }
- void gen_rands() {
- int i, j;
- for(i = 0; i < 65536; i++) {
- *(u16*)&rand_seed[0] = i & 0xffff;
- for(j = 0; j < MAX_RANDS; j += 4) {
- rnd_calc();
- rands[i][MAX_RANDS - 1 - j - 0] = (rand_seed[1] ^ rand_seed[0]) & 0xFF;
- rnd_calc();
- rands[i][MAX_RANDS - 1 - j - 1] = (rand_seed[1] ^ rand_seed[0]) & 0xFF;
- rnd_calc();
- rands[i][MAX_RANDS - 1 - j - 2] = (rand_seed[1] ^ rand_seed[0]) & 0xFF;
- rnd_calc();
- rands[i][MAX_RANDS - 1 - j - 3] = (rand_seed[1] ^ rand_seed[0]) & 0xFF;
- }
- }
- }
- void save_rands() {
- int i, j;
- printf("uxx rands[65536][2048] = {\n");
- for(i = 0; i < 65536; i++) {
- printf(" {");
- for(j = 0; j < MAX_RANDS; j++) {
- if((j & 0x1F) == 0)
- printf("\n");
- printf("%02x,", rands[i][j]);
- }
- printf("\n },\n");
- }
- }
- #define permute_key_0(level) { \
- register uxx tmp = (level ^ key[1]) + key[0]; \
- tmp = ((tmp & 0xFF) - key[2] - (((tmp >> 8) & 1) ^ 1)) ^ 0x100; \
- tmp = (tmp & 0xFF) + key[3] + ((tmp >> 8) & 1); \
- key[3] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[2] + ((tmp >> 8) & 1); \
- key[2] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[1] + ((tmp >> 8) & 1); \
- key[1] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[0] + ((tmp >> 8) & 1); \
- key[0] = tmp & 0xFF; \
- }
- #define permute_key_1(level) { \
- register uxx tmp = level + key[3] + 1; \
- key[3] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[2] + ((tmp >> 8) & 1); \
- key[2] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[1] + ((tmp >> 8) & 1); \
- key[1] = tmp & 0xFF; \
- tmp = (tmp & 0xFF) + key[0] + ((tmp >> 8) & 1); \
- key[0] = tmp & 0xFF; \
- }
- #define permute_key_2(level) { \
- register uxx tmp = (key[0] + level) & 0xFF; \
- key[0] = key[3]; \
- key[3] = tmp; \
- tmp = key[1]; \
- key[1] = key[2]; \
- key[2] = tmp; \
- }
- #define permute_key_3(level) { \
- permute_key_2(level); \
- permute_key_1(level); \
- }
- #define permute_key_4(level) { \
- permute_key_2(level); \
- permute_key_0(level); \
- }
- #define permute_key_5(level) { \
- register uxx tmp = key[1]; \
- key[0] = ((((level << 1) ^ 0xFF) + key[0]) - level) & 0xFF; \
- key[1] = key[3]; \
- key[3] = key[2]; \
- key[2] = tmp; \
- }
- #define permute_key_6(level) { \
- permute_key_5(level); \
- permute_key_1(level); \
- }
- #define permute_key_7(level) { \
- permute_key_5(level); \
- permute_key_0(level); \
- }
- #define key_shedule(level, idx) { \
- switch(idx) { \
- case 0: permute_key_0(level); break; \
- case 1: permute_key_1(level); break; \
- case 2: permute_key_2(level); break; \
- case 3: permute_key_3(level); break; \
- case 4: permute_key_4(level); break; \
- case 5: permute_key_5(level); break; \
- case 6: permute_key_6(level); break; \
- case 7: permute_key_7(level); break; \
- } \
- }
- #define rnddwswap64(a) ((((u64)(rndd(a) >> 16) | (rndd(a) << 16)) << 32) | ((rndd(a - 2) >> 16) | (rndd(a - 2) << 16)))
- void permute_round(u8 idx) {
- __declspec(align(16)) static u32 saturate_mask[4] = {0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF};
- __declspec(align(16)) static u32 and_mask[4] = {0x00010001, 0x00010001, 0x00010001, 0x00010001};
- switch(idx) {
- case 0: {
- register int i;
- __m128i smsk = _mm_loadu_si128((__m128i*)&saturate_mask[0]);
- for(i = 0x7F; i >= 0; i -= 8) {
- __m128i rndx = _mm_loadu_si128((__m128i*)&rands[rands_cur_seed][rands_cur_pos - 7]);
- __m128i tmp0 = _mm_slli_epi16(*(__m128i*)&xor_table[i - 7], 1);
- __m128i tmp1 = _mm_srli_epi16(rndx, 7);
- tmp0 = _mm_or_si128(tmp0, tmp1);
- *(__m128i*)&xor_table[i - 7] = _mm_and_si128(tmp0, smsk);
- rands_cur_pos -= 8;
- }
- break;
- }
- case 1: {
- register int i;
- for(i = 0x7F; i>= 0; i -= 8) {
- __m128i rndx = _mm_loadu_si128((__m128i*)&rands[rands_cur_seed][rands_cur_pos - 7]);
- *(__m128i*)&xor_table[i - 7] = _mm_add_epi8(*(__m128i*)&xor_table[i - 7], rndx);
- rands_cur_pos -= 8;
- }
- break;
- }
- case 2: {
- register int i;
- register uxx tmp = (rnd() >> 7) & 1;
- for(i = 0x7F; i >= 0; i -= 4) {
- tmp = (xor_table[i - 0] << 1) | tmp;
- xor_table[i - 0] = tmp & 0xFF;
- xor_table[i - 1] |= (tmp & 0x100);
- tmp = xor_table[i - 1] & 1;
- xor_table[i - 1] >>= 1;
- tmp = (xor_table[i - 2] << 1) | tmp;
- xor_table[i - 2] = tmp & 0xFF;
- xor_table[i - 3] |= (tmp & 0x100);
- tmp = xor_table[i - 3] & 1;
- xor_table[i - 3] >>= 1;
- }
- break;
- }
- case 3: {
- register int i;
- for(i = 0x7F; i >= 0; i -= 8) {
- __m128i rndx = _mm_loadu_si128((__m128i*)&rands[rands_cur_seed][rands_cur_pos - 7]);
- *(__m128i*)&xor_table[i - 7] = _mm_xor_si128(*(__m128i*)&xor_table[i - 7], rndx);
- rands_cur_pos -= 8;
- }
- break;
- }
- case 4: {
- register int i;
- __m128i smsk = _mm_loadu_si128((__m128i*)&saturate_mask[0]);
- __m128i amsk = _mm_loadu_si128((__m128i*)&and_mask[0]);
- for(i = 0x7F; i >= 0; i -= 8) {
- __m128i rndx = _mm_loadu_si128((__m128i*)&rands[rands_cur_seed][rands_cur_pos - 7]);
- __m128i tmp0;
- rndx = _mm_xor_si128(rndx, smsk);
- tmp0 = _mm_add_epi8(*(__m128i*)&xor_table[i - 7], rndx);
- *(__m128i*)&xor_table[i - 7] = _mm_add_epi8(tmp0, amsk);
- rands_cur_pos -= 8;
- }
- break;
- }
- case 5: {
- register int i;
- register uxx tmp = rnd() << 1;
- for(i = 0x7F; i >= 0; i -= 4) {
- xor_table[i - 0] |= (tmp & 0x100);
- tmp = xor_table[i - 0] & 1;
- xor_table[i - 0] >>= 1;
- tmp = (xor_table[i - 1] << 1) | tmp;
- xor_table[i - 1] = tmp & 0xFF;
- xor_table[i - 2] |= (tmp & 0x100);
- tmp = xor_table[i - 2] & 1;
- xor_table[i - 2] >>= 1;
- tmp = (xor_table[i - 3] << 1) | tmp;
- xor_table[i - 3] = tmp & 0xFF;
- }
- break;
- }
- case 6: {
- register int i;
- for(i = 0; i < 0x80; i += 8) {
- *(u64*)&xor_table[i + 0] = ((*(u64*)&xor_table[i + 0] >> 1) | (rnddwswap64(3) & 0x0080008000800080)) & 0x00FF00FF00FF00FF;
- *(u64*)&xor_table[i + 4] = ((*(u64*)&xor_table[i + 4] >> 1) | (rnddwswap64(7) & 0x0080008000800080)) & 0x00FF00FF00FF00FF;
- rands_cur_pos -= 8;
- }
- break;
- }
- case 7: {
- register int i;
- __m128i smsk = _mm_loadu_si128((__m128i*)&saturate_mask[0]);
- for(i = 0; i < 0x80; i += 8) {
- *(__m128i*)&xor_table[i] = _mm_xor_si128(*(__m128i*)&xor_table[i], smsk);
- }
- break;
- }
- }
- }
- void permute_xor_table() {
- u16 crc = (key[2] & 0xFF) | ((key[3] & 0xFF) << 8);
- srnd((key[0] & 0xFF) | ((key[1] & 0xFF) << 8));
- permute_round(((xor_table[0] >> (((crc & 0x8000) >> 15) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[1] >> (((crc & 0x4000) >> 14) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[2] >> (((crc & 0x2000) >> 13) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[3] >> (((crc & 0x1000) >> 12) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[4] >> (((crc & 0x0800) >> 11) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[5] >> (((crc & 0x0400) >> 10) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[6] >> (((crc & 0x0200) >> 9) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[7] >> (((crc & 0x0100) >> 8) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[8] >> (((crc & 0x0080) >> 7) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[9] >> (((crc & 0x0040) >> 6) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[10] >> (((crc & 0x0020) >> 5) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[11] >> (((crc & 0x0010) >> 4) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[12] >> (((crc & 0x0008) >> 3) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[13] >> (((crc & 0x0004) >> 2) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[14] >> (((crc & 0x0002) >> 1) << 2)) & 0x0F) >> 1);
- permute_round(((xor_table[15] >> (((crc & 0x0001) >> 0) << 2)) & 0x0F) >> 1);
- }
- #define permute(level) { \
- key_shedule(level, (key[(level >> 4) & 3] >> 2) & 7); \
- permute_xor_table(); \
- }
- void expand_key(u8 *iv) {
- int i;
- for(i = 0; i < 8; i++)
- xor_table[i] = iv[i];
- key[0] = xor_table[0];
- key[1] = xor_table[1];
- key[2] = xor_table[2];
- key[3] = xor_table[3];
- srnd((key[0] & 0xFF) | ((key[1] & 0xFF) << 8));
- for(i = 0; i < 0x78; i += 8) {
- *(u64*)&xor_table[i + 8 + 0] = (*(u64*)&xor_table[i + 0] + rnddwswap64(3)) & 0x00FF00FF00FF00FF;
- *(u64*)&xor_table[i + 8 + 4] = (*(u64*)&xor_table[i + 4] + rnddwswap64(7)) & 0x00FF00FF00FF00FF;
- rands_cur_pos -= 8;
- }
- }
- unsigned char level0_iv[] = {
- 0x2C, 0xA5, 0xB4, 0x2D, 0xF7, 0x3A, 0x26, 0x12
- };
- u8 encoded_handler0[] = {
- 0xF4, 0xD7, 0xD1, 0x9E, 0x46, 0x4F, 0x90, 0xF0, 0xA1, 0x3C, 0x59, 0xA3, 0xFA, 0x09, 0x3C, 0x2A,
- 0x0B, 0x5A, 0x44, 0x1B, 0x7E, 0x23, 0x72, 0x63, 0xDD, 0xFA, 0x41, 0x27, 0x9A, 0x46, 0x8B, 0xAE,
- 0xA7, 0xFB, 0xE2, 0xF5, 0x04, 0x01, 0x9A, 0x51, 0xC3, 0x7A, 0x35, 0x58, 0x81, 0xAC, 0x59, 0xC2,
- 0xC3, 0x2A, 0xE4, 0x26, 0xAB, 0x90, 0x1F, 0x52, 0x84, 0xD4, 0xF5, 0x49, 0xC5, 0xE1, 0x55, 0xDC,
- 0xD8, 0x41, 0x28, 0xD1, 0x43, 0xF6, 0xF7, 0xA6, 0x6E, 0x52, 0xD2, 0xE4, 0x34, 0x39, 0xA1, 0x15,
- 0x1A, 0x31, 0x13, 0x0F, 0x21, 0xEA, 0xBF, 0x27, 0xF3, 0x23, 0xA4, 0xA0, 0x30, 0x67, 0x43, 0x32,
- 0x9B, 0x5C, 0xD2, 0xAB, 0x9F, 0x1B, 0x46, 0xD2, 0x7C, 0x3F, 0x6E, 0xD7, 0x23, 0xC8, 0xA6, 0xA1,
- 0x5E, 0x3D
- };
- unsigned char level1_iv[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
- u8 encoded_handler1[] = {
- 0x50, 0xF1, 0xFB, 0x44, 0xBD, 0xC1, 0xB1, 0x5E, 0xE4, 0x18, 0x03, 0x52, 0x1A, 0x1C, 0x93, 0x36,
- 0x6E, 0x2D, 0x2B, 0x2B, 0xB9, 0x5A, 0xA1, 0x58, 0x7B, 0x32, 0xDB, 0x9A, 0xA3, 0x49, 0x40, 0x12,
- 0x06, 0x9C, 0xBB, 0x49, 0xAE, 0xB3, 0xFF, 0x67, 0xF0, 0xD2, 0x8F, 0x6E, 0x45, 0xB7, 0xE5, 0x9A,
- 0x80, 0xAB, 0xFF, 0xD3, 0x98, 0x9A, 0x94, 0x0A, 0x72, 0x81, 0xCF, 0x0A, 0xFF, 0xFB, 0x54, 0xD9,
- 0x0C, 0xE3, 0x22, 0xF1, 0xE2, 0xD2, 0xF4, 0xC7, 0x86, 0x81, 0x90, 0x0B, 0x04, 0xD2, 0x44, 0x66,
- 0xC1, 0x68, 0xCA
- };
- void decode(u8 *enc, uxx *xor, u8 *dec, u8 size) {
- int i;
- for(i = 0; i < (size & 0xFC); i+=8) {
- register u64 tmp = xor[0x7f - i - 4] | (xor[0x7f - i - 5] << 8) | (xor[0x7f - i - 6] << 16) | ((u32)xor[0x7f - i - 7] << 24);
- tmp = (tmp << 32) | (xor[0x7f - i - 0] | (xor[0x7f - i - 1] << 8) | (xor[0x7f - i - 2] << 16) | ((u32)xor[0x7f - i - 3] << 24));
- *(u64*)&dec[i] = *(u64*)&enc[i] ^ tmp;
- }
- for(i = (size & 0xFC); i < size; i++) {
- dec[i] = enc[i] ^ xor[0x7f - i];
- }
- }
- int crccheck(u8 *buf, u8 size) {
- int i;
- u16 sum = 0;
- for(i = 0; i < (size & 0xFC); i+=4) {
- sum += buf[i + 0];
- sum += buf[i + 1];
- sum += buf[i + 2];
- sum += buf[i + 3];
- }
- for(i = (size & 0xFC); i < size; i++) {
- sum += buf[i];
- }
- return sum == (buf[size] | (buf[size + 1] << 8));
- }
- #define log2of10 3.32192809488736234787
- static double rt_log2(double x)
- {
- return log2of10 * log10(x);
- }
- double entropy(u8 *data, u32 size)
- {
- u32 ccount[256], totalc = 0, i;
- double prob[256], cexp, ent = 0.0;
- u8 *bp = data, c;
- for (i = 0; i < 256; i += 8) {
- *(u64*)&ccount[i + 0] = 0;
- *(u64*)&ccount[i + 2] = 0;
- *(u64*)&ccount[i + 4] = 0;
- *(u64*)&ccount[i + 6] = 0;
- }
- totalc = 0;
- while (size-- > 0) {
- c = *bp++;
- ccount[c]++;
- totalc++;
- }
- cexp = totalc / 256.0;
- for (i = 0; i < 256; i += 4) {
- prob[i + 0] = ((double) ccount[i + 0]) / totalc;
- prob[i + 1] = ((double) ccount[i + 1]) / totalc;
- prob[i + 2] = ((double) ccount[i + 2]) / totalc;
- prob[i + 3] = ((double) ccount[i + 3]) / totalc;
- }
- for (i = 0; i < 256; i++) {
- if (prob[i] > 0.0)
- ent += prob[i] * rt_log2(1 / prob[i]);
- }
- return ent;
- }
- void dump(u8 *buf, u8 *key, u8 size, float ent) {
- FILE *o = NULL;
- char n[64];
- sprintf(n, "%.4f-%02X%02X%02X%02X%02X%02X%02X%02X.bin", ent, key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7]);
- o=fopen(n, "wb");
- fwrite(buf, 1, size, o);
- fclose(o);
- }
- void flush(u8 *buf, unsigned long long count, char *name, int size) {
- FILE *o = NULL;
- o=fopen(name, "wb");
- fwrite(&count, 1, 8, o);
- fwrite(buf, 1, size, o);
- fclose(o);
- }
- void load(u8 *buf, unsigned long long *count, char *name, int size) {
- FILE *o = NULL;
- if((o=fopen(name, "rb")) != NULL) {
- fread(count, 1, 8, o);
- fread(buf, 1, size, o);
- fclose(o);
- } else {
- memset(buf, 0, size);
- }
- }
- unsigned long long long_count, short_count;
- u32 long_chunks[0x8000000];
- u32 short_chunks[0x800];
- #ifndef TEST
- u32 *long_seed = (u32*)&level1_iv[4];
- u16 *counter = (u16*)&level1_iv[0];
- u16 *short_seed = (u16*)&level1_iv[2];
- unsigned long long *iv = (unsigned long long*)level1_iv;
- u8 *encoded_handler = encoded_handler1;
- u8 handler_size = sizeof(encoded_handler1);
- #else
- u32 *long_seed = (u32*)&level0_iv[4];
- u16 *counter = (u16*)&level0_iv[0];
- u16 *short_seed = (u16*)&level0_iv[2];
- unsigned long long *iv = (unsigned long long*)level0_iv;
- u8 *encoded_handler = encoded_handler0;
- u8 handler_size = sizeof(encoded_handler0);
- #endif
- int main() {
- int i;
- char sname[128];
- #ifdef RANDOM1
- srand((int)time(NULL));
- #endif
- #ifdef RANDOM2
- srand((int)time(NULL));
- #endif
- #ifndef RANDGEN
- printf("rand generate...");
- #endif
- gen_rands();
- #ifdef RANDGEN
- save_rands();
- exit(0);
- #else
- printf(" done\n");
- #endif
- long_count = 0x100000000UL;
- #ifndef TEST
- load((u8*)long_chunks, &long_count, "long_brute.data", sizeof(long_chunks));
- #endif
- memset(short_chunks, 0, sizeof(short_chunks));
- printf("brute start...\n");
- #ifndef TEST
- // (*long_seed) = 0;
- (*short_seed) = 0;
- #endif
- while (long_count > 0) {
- u32 lidx, lbit;
- #ifndef TEST
- #ifdef RANDOM1
- u32 tmp;
- (*long_seed) = rand();
- tmp = rand() << 15;
- (*long_seed) |= tmp;
- tmp = (rand() & 3) << 30;\
- (*long_seed) |= tmp;
- #endif
- #endif
- short_count = 0x10000;
- sprintf(sname, "short_brute_%08X.data", (*long_seed));
- #ifndef TEST
- load((u8*)short_chunks, &short_count, sname, sizeof(short_chunks));
- #endif
- lidx = (*long_seed) >> 5;
- lbit = 1 << ((*long_seed) & 0x1F);
- if (!(long_chunks[lidx] & lbit)) {
- long_chunks[lidx] |= lbit;
- long_count--;
- printf(" long chunk %08X in progress...\n", (*long_seed));
- while (short_count > 0)
- {
- u32 sidx, sbit;
- #ifndef TEST
- #ifdef RANDOM2
- u32 tmp;
- (*short_seed) = rand();
- tmp = (rand() & 1) << 15;
- (*short_seed) |= tmp;
- #endif
- #endif
- sidx = (*short_seed) >> 5;
- sbit = 1 << ((*short_seed) & 0x1F);
- if (!(short_chunks[sidx] & sbit)) {
- short_chunks[sidx] |= sbit;
- short_count--;
- #ifndef TEST
- (*counter) = 0;
- #endif
- printf(" short chunk %04X in progress...\n", (*short_seed));
- #ifndef TEST
- for(i = 0; i < 0x10000; i++)
- #else
- for(i = (*counter); i < 0x10000; i++)
- #endif
- {
- expand_key((u8*)iv);
- permute(0x00);
- permute(0x02);
- permute(0x05);
- permute(0x04);
- permute(0x03);
- permute(0x1D);
- permute(0x1C);
- permute(0x1E);
- permute_key_6(0x1B);
- permute(0x1B);
- permute(0x07);
- permute(0x08);
- permute_key_0(0x06);
- permute_xor_table();
- permute(0x09);
- permute(0x0c);
- permute(0x20);
- permute(0x21);
- permute(0x22);
- permute_key_4(0x22);
- permute_xor_table();
- permute(0x23);
- permute(0x24);
- permute(0x25);
- permute(0x26);
- permute(0x0E);
- permute(0x0F);
- permute(0x10);
- permute(0x12);
- permute(0x11);
- decode(encoded_handler, xor_table, decoded_handler, handler_size);
- #ifdef TEST
- if((xor_table[0] == 0xFD) && (xor_table[1] == 0x22) && (xor_table[2] == 0x3C) && (xor_table[3] == 0x40)) {
- #else
- if(crccheck(decoded_handler, handler_size - 2)) {
- u8 *k = (u8 *)iv;
- float ent = (float)entropy(decoded_handler, handler_size - 2);
- #endif
- #ifdef TEST
- if(i == 0xA52C)
- #endif
- {
- #ifdef TEST
- printf(" PASS!\n");
- #else
- printf(" crc check passed for a key: %02X %02X %02X %02X %02X %02X %02X %02X (entropy = %.4f)\n",k[0], k[1], k[2], k[3], k[4], k[5], k[6], k[7], ent);
- dump(decoded_handler, k, handler_size, ent);
- #endif
- }
- }
- (*counter)++;
- }
- }
- #ifndef RANDOM2
- (*short_seed)++;
- #endif
- flush((u8*)short_chunks, short_count, sname, sizeof(short_chunks));
- }
- #ifndef RANDOM1
- (*long_seed)++;
- #endif
- flush((u8*)long_chunks, long_count, "long_brute.data", sizeof(long_chunks));
- }
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment