summaryrefslogtreecommitdiff
path: root/task1_hex_to_base64.c
diff options
context:
space:
mode:
Diffstat (limited to 'task1_hex_to_base64.c')
-rw-r--r--task1_hex_to_base64.c79
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();
+
+
}