Selaa lähdekoodia

Set2_1 ongoing

api_change
None 9 vuotta sitten
vanhempi
commit
b446dc5798
10 muutettua tiedostoa jossa 364 lisäystä ja 606 poistoa
  1. +4
    -1
      Makefile
  2. +274
    -578
      MatsanoCrypto.sublime-workspace
  3. +3
    -1
      main.cpp
  4. +20
    -23
      set1/runner.cpp
  5. +1
    -3
      set1/runner.h
  6. +27
    -0
      set2/runner.c
  7. +15
    -0
      set2/runner.h
  8. +3
    -0
      utils/common.h
  9. +15
    -0
      utils/pkcs7.c
  10. +2
    -0
      utils/pkcs7.h

+ 4
- 1
Makefile Näytä tiedosto

@@ -6,14 +6,17 @@ all:
g++ -g -I${INC} -c utils/base64.cpp -o obj/base64.o
g++ -g -I${INC} -c utils/runner.cpp -o obj/utils_runner.o
g++ -g -I${INC} -c utils/xor.c -o obj/xor.o
g++ -g -I${INC} -c utils/pkcs7.c -o obj/pkcs7.o
g++ -g -I${INC} -c set1/xor_char_finder.cpp -o obj/xor_char_finder.o
g++ -g -I${INC} -c utils/hamming.c -o obj/hamming.o
g++ -g -I${INC} -c set1/runner.cpp -o obj/set1_runner.o
g++ -g -I${INC} -c set2/runner.c -o obj/set2_runner.o
g++ -g -I${INC} -c set1/ecb.c -o obj/ecb.o
g++ -g -I${INC} -c main.cpp -o obj/main.o
g++ -g -lpthread -lcrypto -o main obj/common.o obj/base64.o obj/xor_char_finder.o obj/xor.o \
obj/hamming.o obj/utils_runner.o \
obj/set1_runner.o obj/main.o obj/ecb.o
obj/set1_runner.o obj/main.o obj/ecb.o \
obj/set2_runner.o obj/pkcs7.o
clean:
rm -rf obj



+ 274
- 578
MatsanoCrypto.sublime-workspace
File diff suppressed because it is too large
Näytä tiedosto


+ 3
- 1
main.cpp Näytä tiedosto

@@ -1,10 +1,12 @@
#include "set1/runner.h"
#include "set2/runner.h"
#include "utils/runner.h"

int main()
{
// UTILS::run();
UTILS::run();
SET1::run();
SET2::run();

return 0;
}

+ 20
- 23
set1/runner.cpp Näytä tiedosto

@@ -22,7 +22,7 @@ char guess_encryption_key_letter(const char ciphertext_hex[])
return max_score.letter;
}

void set1_challenge3_test()
FUNC(set1_challenge3_test)
{
static const char ciphertext[] = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736";
unsigned char buf[2];
@@ -33,9 +33,10 @@ void set1_challenge3_test()
sprintf((char*)buf, "%c", ret);
check(ret == 'X', buf);
}
FUNC_E


void xor_char_finder_test()
FUNC(xor_char_finder_test)
{
// "This is my simple text."
unsigned char buf[256];
@@ -62,8 +63,9 @@ void xor_char_finder_test()
sprintf((char*)buf, "Returned: [%c]", got);
check(got == 'M', buf);
}
FUNC_E

void set1_challange4_test()
FUNC(set1_challange4_test)
{
FILE* fp;
char* line=NULL;
@@ -115,8 +117,9 @@ void set1_challange4_test()
}
free(line);
}
FUNC_E

void set1_challenge_5_test()
FUNC(set1_challenge_5_test)
{
const unsigned char ch1[] = "Burning 'em, if you ain't quick and nimble\nI go crazy when I hear a cymbal";
const unsigned char xor_val[] = "ICE";
@@ -136,8 +139,9 @@ void set1_challenge_5_test()
for(unsigned i=0; i<sizeof(expected)/sizeof(unsigned char); ++i)
check( expected[i] == po_ch1[i] );
}
FUNC_E

void set1_challenge_6_test()
FUNC(set1_challenge_6_test)
{
const unsigned max_block_size=200;

@@ -157,16 +161,15 @@ void set1_challenge_6_test()
int best_key_size = find_best_keysize(base64_buf, strlen(base64_buf));
check(best_key_size==29);
best_key_size=crack_repeted_xor(base64_buf, out_buf, best_key_size);
// sprintf((char*)error_buf, "Wrong keysize. Expected 5 got %d\n", best_key_size);
// check(memcmp(expected_plaintext1, out_buf, sizeof(expected_plaintext1))==0, out_buf);
printf("Key size: %d. Content:\n ", best_key_size);
for(int i=0; i<len; ++i)
printf("%c", out_buf[i]);
//check(memcmp(expected_plaintext3, buf, sizeof(expected_plaintext3))==0, buf);

// OZAPTF: to do, it works just need correct check
// check(memcmp(expected_plaintext3, buf, sizeof(expected_plaintext3))==0, buf);

}
FUNC_E

void crack_repeted_xor_test()
FUNC(crack_repeted_xor_test)
{

unsigned char error_buf[256];
@@ -211,18 +214,10 @@ void crack_repeted_xor_test()
sprintf((char*)error_buf, "Wrong keysize. Expected 20 got %d\n", best_key_size);
check(best_key_size==20, error_buf);
check(memcmp(expected_plaintext3, buf, sizeof(expected_plaintext3))==0, buf);

/* this doesn't work
memset(buf,0,sizeof(buf));
best_key_size = find_best_keysize(hex_str4, strlen(hex_str4));
crack_repeted_xor(hex_str4, buf, best_key_size);
sprintf((char*)error_buf, "Wrong keysize. Expected 3 got %d\n", best_key_size);
check(best_key_size==3, error_buf);
check(memcmp(expected_plaintext4, buf, sizeof(expected_plaintext4))==0, buf);
*/
}
FUNC_E

void set1_challenge_7_test()
FUNC(set1_challenge_7_test)
{
const unsigned char pass[]="YELLOW SUBMARINE";
const char expected_first_line[] = "I'm back and I'm ringin' the bell";
@@ -237,8 +232,9 @@ void set1_challenge_7_test()
ret = ecb_decrypt(hex, ret, pass, sizeof(pass), &buff[0]);
check(memcmp(buff, expected_first_line, strlen(expected_first_line))==0);
}
FUNC_E

void set1_challenge_8_test()
FUNC(set1_challenge_8_test)
{
FILE* fh=NULL;

@@ -270,4 +266,5 @@ void set1_challenge_8_test()
check(current_line==133);
check(first==2);
check(second==4);
}
}
FUNC_E

+ 1
- 3
set1/runner.h Näytä tiedosto

@@ -14,9 +14,6 @@ namespace SET1 {
void run()
{
crack_repeted_xor_test();
//set1_challenge_6_test();
//
return;
xor_char_finder_test();
set1_challenge3_test();
set1_challange4_test();
@@ -24,6 +21,7 @@ namespace SET1 {

set1_challenge_7_test();
set1_challenge_8_test();
set1_challenge_6_test();
}

}


+ 27
- 0
set2/runner.c Näytä tiedosto

@@ -0,0 +1,27 @@
#include <assert.h>
#include "utils/common.h"
#include "utils/pkcs7.h"
#include <stdio.h>
#include <string.h>

FUNC(pkcs7_test)
{
// int pkcs7_pad(const char* i_buff, const size_t i_len, char* o_buff );
const char text1[] = "Text1";
const char text2[] = "Text2ToPad";
int ret;
char buff1[32];
char buff2[10];

ret = pkcs7_pad(text1, 5, buff1, 32);
check(ret==0, (const unsigned char* const) "Padding operation failed");
ret = memcmp(text1, buff1, 5);
check(ret==0, (const unsigned char* const) "Content differs");
printf("%s\n", text1);
for(int i=5; i<32; i++)
{
printf("%d\n", text1[i]);
check(text1[i] == 27, (const unsigned char* const) "Wrong padding");
}
}
FUNC_E

+ 15
- 0
set2/runner.h Näytä tiedosto

@@ -0,0 +1,15 @@
#ifndef __set2_runner__
#define __set2_runner__

void pkcs7_test();

struct SET2
{
static void run()
{
pkcs7_test();
}
};


#endif// __set2_runner__

+ 3
- 0
utils/common.h Näytä tiedosto

@@ -1,3 +1,6 @@
#define FUNC(x) void x() { printf("Entering %s\n", __func__);
#define FUNC_E }

void check(int iFlag, const unsigned char* const msg = 0);
struct int24 { unsigned int data:24; };
unsigned long read_file_to_buffer(const char* const filepath, char* obuff, int remove_new_line_chr = 1);

+ 15
- 0
utils/pkcs7.c Näytä tiedosto

@@ -0,0 +1,15 @@
#include <stdlib.h>
#include <string.h>

int pkcs7_pad(const char* i_buff, size_t i_len, char* o_buff, size_t i_obuff_len )
{
if(i_obuff_len < i_len )
{
return -1;
}

const unsigned pad_value = i_obuff_len - i_len;
memset(o_buff, pad_value, i_obuff_len);
memcpy(o_buff, i_buff, i_len);
return 0;
}

+ 2
- 0
utils/pkcs7.h Näytä tiedosto

@@ -0,0 +1,2 @@
#include <stdlib.h>
int pkcs7_pad(const char* i_buff, size_t i_len, char* o_buff, size_t i_obuff_len );

Ladataan…
Peruuta
Tallenna