diff options
| author | Benedict <benedict@0xb8000.de> | 2016-03-02 19:02:27 +0100 |
|---|---|---|
| committer | Benedict <benedict@0xb8000.de> | 2017-02-21 13:00:24 +0100 |
| commit | 383732972f4c00dce231f61ac7375ae212e0d9c7 (patch) | |
| tree | 3483eec5f58673aced810cfd6d69036f6634b079 | |
| parent | e836057207c9de21c5af8f21191aea86184662a3 (diff) | |
set 1, challenge 5 completed
| -rw-r--r-- | task1_hex_to_base64.c | 35 | ||||
| -rw-r--r-- | test.sh | 22 |
2 files changed, 54 insertions, 3 deletions
diff --git a/task1_hex_to_base64.c b/task1_hex_to_base64.c index c4bf7d9..8e19f74 100644 --- a/task1_hex_to_base64.c +++ b/task1_hex_to_base64.c @@ -169,7 +169,20 @@ int convert_to_base64(char *encode, char *result) } -void xor_string(char *str1, char* str2, char *result, int length) { +void xor_string(char *str1, char *key, char *result) +{ + int i, j; + int length_key = strlen(key); + + for(i=0, j=0;i<strlen(str1);i++,j++) { + if (j >= length_key) + j = 0; + + result[i] = str1[i] ^ key[j]; + } +} + +void xor_string_equal_length(char *str1, char* str2, char *result, int length) { int i; for(i=0;i<length;i++) @@ -286,6 +299,18 @@ void task4() { } +void task5() +{ + char *stanze = "Burning 'em, if you ain't quick and nimble\nI go crazy when I hear a cymbal"; + + //printf("%s\n", stanze); + char *result = malloc(strlen(stanze)); + char *printable = malloc(strlen(stanze)*5); + xor_string(stanze, "ICE", result); + hex_binary_to_string(result, printable, 2*strlen(stanze)); + printf("%s\n", printable); +} + int main(int argc, char **argv) { @@ -298,7 +323,7 @@ int main(int argc, char **argv) char *back_hex = malloc(length); int i = convert_hex_string_to_character_string(argv[1], tmp); int j = convert_hex_string_to_character_string(argv[2], tmp2); - xor_string(tmp, tmp2, __xor_string, strlen(argv[2])); + xor_string_equal_length(tmp, tmp2, __xor_string, strlen(argv[2])); // convert the __xor_string to printable charaters hex_binary_to_string(tmp2, back_hex, strlen(argv[2])); printf("***************************\n"); @@ -326,10 +351,14 @@ int main(int argc, char **argv) //string_looks_ } - +/* printf("***************************\n"); printf("set 1, challenge 4\n"); task4(); +*/ + //printf("***************************\n"); + //printf("set 1, challenge 5\n"); + task5(); } @@ -0,0 +1,22 @@ +#!/bin/bash + + +test_compare_string() { + if [ "$1" == "$2" ] + then + echo "test ok" + else + echo "test broken" + fi +} + +test_set1_challenge5() { + +OUTPUT=$(./a.out) +EXCEPTED="0b3637272a2b2e63622c2e69692a23693a2a3c6324202d623d63343c2a26226324272765272a282b2f20430a652e2c652a3124333a653e2b2027630c692b20283165286326302e27282f" + +test_compare_string "$OUTPUT" "$EXCEPTED" +} + + +test_set1_challenge5 |
