/* 11 August 2002 Havoc Korporation team presents... +++++++++++++++++++++++++++++++++++++++++++++++++++ ++ H a v o c K o r p k r y p t o l y z e r ++ +++++++++++++++++++++++++++++++++++++++++++++++++++ + w w w . h a v o c k o r p . c o m + +++++++++++++++++++++++++++++++++++++++++++++++++++ Description: This program analyse an encrypted file and presents the most common word stat. With some inaccurency, this could be useful for decrypting weak algorithms like ceaser's encryption algorithm. !!!++++++++++++++++++++++++++++++++++++++++++++++++++++++++!!! WE ARE RECRUTING MEMBER FOR OUR TEAM... Apply for our units: + Security + coding + reverse engineering + + GSM + webdesigner + gFX'er + check www.havockorp.com for more info, or email us. !!!++++++++++++++++++++++++++++++++++++++++++++++++++++++++!!! */ #include #include struct data { int total; int A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z; int numb; int others; } var; int main(int argc, char **argv) { FILE *fp, *fp2; char *filename, *filename2; char chr; float f_A, f_B, f_C, f_D, f_E, f_F, f_G, f_H, f_I, f_J, f_K, f_L, f_M, f_N, f_O, f_P, f_Q, f_R, f_S, f_T, f_U, f_V, f_W, f_X, f_Y, f_Z, f_a, f_b, f_c, f_d, f_e, f_f, f_g, f_h, f_i, f_j, f_k, f_l, f_m, f_n, f_o, f_p, f_q, f_r, f_s, f_t, f_u, f_v, f_w, f_x, f_y, f_z, f_numb, f_others; if (argc != 3) { printf("\n\n"); printf("++++++++++++++++++++++++++++\n"); printf("++ Havoc Korp kryptolyzer ++\n"); printf("++++++++++++++++++++++++++++\n"); printf("+ www.havockorp.com +\n"); printf("++++++++++++++++++++++++++++\n\n"); printf("usage: %s input.txt output.txt\n\n", argv[0]); exit(1); } filename = argv[1]; filename2 = argv[2]; fp = fopen(filename, "r"); if (fp == NULL) { printf("ERROR: unexistant file \"%s\".\n", filename); exit(1); } fp2 = fopen(filename2, "w"); if (fp2 == NULL) { printf("ERROR: couldnt create \"%s\".\n", filename2); exit(1); } /* vars to zero var.a=0; var.b=0; var.c=0; var.d=0; var.e=0; var.f=0; var.g=0; var.h=0; var.i=0; var.j=0; var.k=0; var.l=0; var.m=0; var.n=0; var.o=0; var.p=0; var.q=0; var.r=0; var.s=0; var.t=0; var.u=0; var.v=0; var.w=0; var.x=0; var.y=0; var.z=0; var.numb=0; var.total=0; var.others=0; */ printf("Wait..."); while(fread(&chr, 1, 1, fp) != 0) { if (chr == ' ') { /* do nothing */ } if (chr == 'a') { var.total++; var.a++; } if (chr == 'b') { var.total++; var.b++; } if (chr == 'c') { var.total++; var.c++; } if (chr == 'd') { var.total++; var.d++; } if (chr == 'e') { var.total++; var.e++; } if (chr == 'f') { var.total++; var.f++; } if (chr == 'g') { var.total++; var.g++; } if (chr == 'h') { var.total++; var.h++; } if (chr == 'i') { var.total++; var.i++; } if (chr == 'j') { var.total++; var.j++; } if (chr == 'k') { var.total++; var.k++; } if (chr == 'l') { var.total++; var.l++; } if (chr == 'm') { var.total++; var.m++; } if (chr == 'n') { var.total++; var.n++; } if (chr == 'o') { var.total++; var.o++; } if (chr == 'p') { var.total++; var.p++; } if (chr == 'q') { var.total++; var.q++; } if (chr == 'r') { var.total++; var.r++; } if (chr == 's') { var.total++; var.s++; } if (chr == 't') { var.total++; var.t++; } if (chr == 'u') { var.total++; var.u++; } if (chr == 'v') { var.total++; var.v++; } if (chr == 'w') { var.total++; var.w++; } if (chr == 'x') { var.total++; var.x++; } if (chr == 'y') { var.total++; var.y++; } if (chr == 'z') { var.total++; var.z++; } if (chr == 'A') { var.total++; var.A++; } if (chr == 'B') { var.total++; var.B++; } if (chr == 'C') { var.total++; var.C++; } if (chr == 'D') { var.total++; var.D++; } if (chr == 'E') { var.total++; var.E++; } if (chr == 'F') { var.total++; var.F++; } if (chr == 'G') { var.total++; var.G++; } if (chr == 'H') { var.total++; var.H++; } if (chr == 'I') { var.total++; var.I++; } if (chr == 'J') { var.total++; var.J++; } if (chr == 'K') { var.total++; var.K++; } if (chr == 'L') { var.total++; var.L++; } if (chr == 'M') { var.total++; var.M++; } if (chr == 'N') { var.total++; var.N++; } if (chr == 'O') { var.total++; var.O++; } if (chr == 'P') { var.total++; var.Q++; } if (chr == 'Q') { var.total++; var.Q++; } if (chr == 'R') { var.total++; var.R++; } if (chr == 'S') { var.total++; var.S++; } if (chr == 'T') { var.total++; var.T++; } if (chr == 'U') { var.total++; var.U++; } if (chr == 'V') { var.total++; var.V++; } if (chr == 'W') { var.total++; var.W++; } if (chr == 'X') { var.total++; var.X++; } if (chr == 'Y') { var.total++; var.Y++; } if (chr == 'Z') { var.total++; var.Z++; } /* numbers condition test */ if (chr >= '0' || chr <= '9') { var.total++; var.numb++; } /* non alphanumerics chars */ else { var.total++; var.others++; } } /* end of while */ printf("done!\n\n"); f_a = (float)(var.a * 100) / var.total; f_A = (float)(var.A * 100) / var.total; f_b = (float)(var.b * 100) / var.total; f_B = (float)(var.B * 100) / var.total; f_c = (float)(var.c * 100) / var.total; f_C = (float)(var.C * 100) / var.total; f_d = (float)(var.d * 100) / var.total; f_D = (float)(var.D * 100) / var.total; f_e = (float)(var.e * 100) / var.total; f_E = (float)(var.E * 100) / var.total; f_f = (float)(var.g * 100) / var.total; f_F = (float)(var.G * 100) / var.total; f_g = (float)(var.g * 100) / var.total; f_G = (float)(var.G * 100) / var.total; f_h = (float)(var.h * 100) / var.total; f_H = (float)(var.H * 100) / var.total; f_i = (float)(var.i * 100) / var.total; f_I = (float)(var.I * 100) / var.total; f_j = (float)(var.j * 100) / var.total; f_J = (float)(var.J * 100) / var.total; f_k = (float)(var.k * 100) / var.total; f_K = (float)(var.K * 100) / var.total; f_l = (float)(var.l * 100) / var.total; f_L = (float)(var.L * 100) / var.total; f_m = (float)(var.m * 100) / var.total; f_M = (float)(var.M * 100) / var.total; f_n = (float)(var.n * 100) / var.total; f_N = (float)(var.N * 100) / var.total; f_o = (float)(var.o * 100) / var.total; f_O = (float)(var.O * 100) / var.total; f_p = (float)(var.p * 100) / var.total; f_P = (float)(var.P * 100) / var.total; f_q = (float)(var.q * 100) / var.total; f_Q = (float)(var.Q * 100) / var.total; f_r = (float)(var.r * 100) / var.total; f_R = (float)(var.R * 100) / var.total; f_s = (float)(var.s * 100) / var.total; f_S = (float)(var.S * 100) / var.total; f_t = (float)(var.t * 100) / var.total; f_T = (float)(var.T * 100) / var.total; f_u = (float)(var.u * 100) / var.total; f_U = (float)(var.U * 100) / var.total; f_v = (float)(var.v * 100) / var.total; f_V = (float)(var.V * 100) / var.total; f_w = (float)(var.w * 100) / var.total; f_W = (float)(var.W * 100) / var.total; f_x = (float)(var.x * 100) / var.total; f_X = (float)(var.X * 100) / var.total; f_y = (float)(var.y * 100) / var.total; f_Y = (float)(var.Y * 100) / var.total; f_z = (float)(var.z * 100) / var.total; f_Z = (float)(var.Z * 100) / var.total; f_numb = (float)(var.numb * 100) / var.total; f_others = (float)(var.others * 100) / var.total; fprintf(fp2, "+++++++++++++++++++++++++\n"); fprintf(fp2, "+ Havoc Korp kriptolyze +\n"); fprintf(fp2, "+++++++++++++++++++++++++\n"); fprintf(fp2, "+ www.havockorp.com +\n"); fprintf(fp2, "+++++++++++++++++++++++++\n\n"); fprintf(fp2, "Input file: %s date: %s time: %s\n", filename, __DATE__, __TIME__); fprintf(fp2, "\n\n"); fprintf(fp2, "Total Chars: %d \n\n", var.total); fprintf(fp2, "Char. total Percentage\n\n"); fprintf(fp2, "A:%8d %16.2f\n", var.A, f_A); fprintf(fp2, "a:%8d %16.2f\n", var.a, f_a); fprintf(fp2, "B:%8d %16.2f\n", var.B, f_b); fprintf(fp2, "b:%8d %16.2f\n", var.b, f_B); fprintf(fp2, "C:%8d %16.2f\n", var.C, f_C); fprintf(fp2, "c:%8d %16.2f\n", var.c, f_c); fprintf(fp2, "D:%8d %16.2f\n", var.D, f_D); fprintf(fp2, "d:%8d %16.2f\n", var.d, f_d); fprintf(fp2, "E:%8d %16.2f\n", var.E, f_E); fprintf(fp2, "e:%8d %16.2f\n", var.e, f_e); fprintf(fp2, "F:%8d %16.2f\n", var.F, f_F); fprintf(fp2, "f:%8d %16.2f\n", var.f, f_f); fprintf(fp2, "G:%8d %16.2f\n", var.G, f_G); fprintf(fp2, "g:%8d %16.2f\n", var.g, f_g); fprintf(fp2, "H:%8d %16.2f\n", var.H, f_H); fprintf(fp2, "h:%8d %16.2f\n", var.h, f_h); fprintf(fp2, "I:%8d %16.2f\n", var.I, f_I); fprintf(fp2, "i:%8d %16.2f\n", var.i, f_i); fprintf(fp2, "J:%8d %16.2f\n", var.J, f_J); fprintf(fp2, "j:%8d %16.2f\n", var.j, f_j); fprintf(fp2, "K:%8d %16.2f\n", var.K, f_K); fprintf(fp2, "k:%8d %16.2f\n", var.k, f_k); fprintf(fp2, "L:%8d %16.2f\n", var.L, f_L); fprintf(fp2, "l:%8d %16.2f\n", var.l, f_l); fprintf(fp2, "M:%8d %16.2f\n", var.M, f_M); fprintf(fp2, "m:%8d %16.2f\n", var.m, f_m); fprintf(fp2, "N:%8d %16.2f\n", var.N, f_N); fprintf(fp2, "n:%8d %16.2f\n", var.n, f_n); fprintf(fp2, "O:%8d %16.2f\n", var.O, f_O); fprintf(fp2, "o:%8d %16.2f\n", var.o, f_o); fprintf(fp2, "P:%8d %16.2f\n", var.P, f_P); fprintf(fp2, "p:%8d %16.2f\n", var.p, f_p); fprintf(fp2, "Q:%8d %16.2f\n", var.Q, f_Q); fprintf(fp2, "q:%8d %16.2f\n", var.q, f_q); fprintf(fp2, "R:%8d %16.2f\n", var.R, f_R); fprintf(fp2, "r:%8d %16.2f\n", var.r, f_r); fprintf(fp2, "S:%8d %16.2f\n", var.S, f_S); fprintf(fp2, "s:%8d %16.2f\n", var.s, f_s); fprintf(fp2, "T:%8d %16.2f\n", var.T, f_T); fprintf(fp2, "t:%8d %16.2f\n", var.t, f_t); fprintf(fp2, "U:%8d %16.2f\n", var.U, f_U); fprintf(fp2, "u:%8d %16.2f\n", var.u, f_u); fprintf(fp2, "V:%8d %16.2f\n", var.V, f_V); fprintf(fp2, "v:%8d %16.2f\n", var.v, f_v); fprintf(fp2, "W:%8d %16.2f\n", var.W, f_W); fprintf(fp2, "w:%8d %16.2f\n", var.w, f_w); fprintf(fp2, "X:%8d %16.2f\n", var.X, f_X); fprintf(fp2, "x:%8d %16.2f\n", var.x, f_x); fprintf(fp2, "Y:%8d %16.2f\n", var.Y, f_Y); fprintf(fp2, "y:%8d %16.2f\n", var.y, f_y); fprintf(fp2, "Z:%8d %16.2f\n", var.Z, f_Z); fprintf(fp2, "z:%8d %16.2f\n", var.z, f_z); fprintf(fp2, "numbers:%8d %16.2f\n", var.numb, f_numb); fprintf(fp2, "Others:%8d %16.2f\n", var.others, f_others); fprintf(fp2, "\n"); fclose(fp); fclose(fp2); } /* end of main() function */