diff options
| author | Benedict <benedict@0xb8000.de> | 2016-03-01 23:18:35 +0100 |
|---|---|---|
| committer | Benedict <benedict@0xb8000.de> | 2017-02-21 13:00:24 +0100 |
| commit | e836057207c9de21c5af8f21191aea86184662a3 (patch) | |
| tree | 499c12a87a1337de40cba1b6f7d4df37a18ab490 /task1_hex_to_base64.c | |
| parent | 2672a46218139fc5cbb4844096da451f7e243849 (diff) | |
set 1, challenge 4 completed
Diffstat (limited to 'task1_hex_to_base64.c')
| -rw-r--r-- | task1_hex_to_base64.c | 79 |
1 files changed, 69 insertions, 10 deletions
diff --git a/task1_hex_to_base64.c b/task1_hex_to_base64.c index 40c0a94..c4bf7d9 100644 --- a/task1_hex_to_base64.c +++ b/task1_hex_to_base64.c @@ -212,23 +212,81 @@ void hex_binary_to_string(char *str1, char *result, int length) -int score_based_on_frequent_characters(char *string) +int score_based_on_frequent_characters(char *string, int length) { int number = 0; int i; - int length = strlen(string); char tmp; - for(i=0;i<strlen(string);i++) { + for(i=0;i<length;i++) { tmp = tolower(string[i]); if( tmp == 'e' || tmp == 'a' || tmp == 'i' || tmp == 'o' || tmp == 'u' ) number++; } - return (number*100/length); + return ((number*100)/length); } +int isprintable(char *string, int length) +{ + int i; + + for(i=0;i<length;i++) { + if(!(isprint(string[i]) || isspace(string[i]))) { + return 0; + } + } + + return 1; +} + +void string_looks_like_it_is_english(char *string, int length) +{ + char *xor_tmp = malloc(strlen(string)); + int i; + + for(i= 0; i< 255; i++) { + xor_string_single_byte((char) i, string, xor_tmp, length); + if (!isprintable(xor_tmp, length)) + continue; + int score = score_based_on_frequent_characters(xor_tmp, length); + if(score > 20) + printf("char: %c, score: %i, string: %s\n", (char) i, score, xor_tmp); + } + + //free(xor_tmp); +} + +void task4() { + /** read the file */ + FILE *fp; + int bytes_read; + int malloc_size = 62; + int line_number = 0; + int j; + char *string = malloc(malloc_size); + char *string2 = malloc(malloc_size); + + fp = fopen("4.txt", "r"); + + if (fp == NULL) { + printf("Error open file\n"); + exit(1); + } + + while (fscanf(fp, "%61c", string) != EOF) { + j = convert_hex_string_to_character_string(string, string2); + printf("line number: %i, length: %i,\n", line_number, j); + string_looks_like_it_is_english(string2, j); + line_number++; + } + + fclose(fp); + +} + + int main(int argc, char **argv) { if (argc == 3 ) { @@ -265,12 +323,13 @@ int main(int argc, char **argv) printf("***************************\n"); printf("set 1, challenge 3\n"); - for(i= 'A'; i< 'Z'; i++) { - xor_string_single_byte((char) i, tmp2, __xor_string, j); - int score = score_based_on_frequent_characters(__xor_string); - if(score > 30) - printf("char: %c, score: %i, string: %s\n", (char) i, score, __xor_string); + //string_looks_ + } - } + printf("***************************\n"); + printf("set 1, challenge 4\n"); + task4(); + + } |
