Kaynağa Gözat

Set 2 T2 done, just test needed

api_change
Krzysztof Kwiatkowski 9 yıl önce
ebeveyn
işleme
eb8631d9fc
6 değiştirilmiş dosya ile 203 ekleme ve 453 silme
  1. +2
    -0
      Makefile
  2. +122
    -445
      MatsanoCrypto.sublime-workspace
  3. +2
    -1
      set1/ecb.c
  4. +49
    -5
      set2/cbc.c
  5. +26
    -2
      set2/runner.c
  6. +2
    -0
      set2/runner.h

+ 2
- 0
Makefile Dosyayı Görüntüle

@@ -24,6 +24,8 @@ all:
-lcrypto
clean:
rm -rf obj
rm -rf main
rm -rf core*

andrun: all
main

+ 122
- 445
MatsanoCrypto.sublime-workspace Dosyayı Görüntüle

@@ -3,6 +3,22 @@
{
"selected_items":
[
[
"Resu",
"Result_Error"
],
[
"o_",
"o_buff_ptr"
],
[
"key",
"key_len"
],
[
"in",
"input_buff"
],
[
"base",
"base64_to_hex"
@@ -498,56 +514,24 @@
[
"ConfigDUSI",
"ConfigDUConState::processInsert"
],
[
"comme",
"comment-fix comment-fix"
],
[
"subsci",
"subscriber"
],
[
"subs",
"subscribe"
],
[
"onRece",
"onInitReceived"
]
]
},
"buffers":
[
{
"file": "set1/runner.cpp",
"settings":
{
"buffer_size": 12087,
"line_ending": "Unix"
}
},
{
"file": "utils/common.h",
"settings":
{
"buffer_size": 462,
"buffer_size": 573,
"line_ending": "Unix"
}
},
{
"file": "utils/pkcs7.c",
"file": "set2/cbc.h",
"settings":
{
"buffer_size": 353,
"line_ending": "Unix"
}
},
{
"file": "set1/ecb.c",
"settings":
{
"buffer_size": 1860,
"buffer_size": 802,
"line_ending": "Unix"
}
},
@@ -555,39 +539,31 @@
"file": "set2/cbc.c",
"settings":
{
"buffer_size": 461,
"line_ending": "Unix"
}
},
{
"file": "utils/pkcs7.h",
"settings":
{
"buffer_size": 103,
"buffer_size": 1425,
"line_ending": "Unix"
}
},
{
"file": "utils/common.c",
"file": "set1/ecb.h",
"settings":
{
"buffer_size": 1200,
"buffer_size": 469,
"line_ending": "Unix"
}
},
{
"file": "utils/base64.cpp",
"file": "set1/ecb.c",
"settings":
{
"buffer_size": 8075,
"buffer_size": 1842,
"line_ending": "Unix"
}
},
{
"file": "set1/xor_char_finder.h",
"file": "utils/xor.h",
"settings":
{
"buffer_size": 3435,
"buffer_size": 308,
"line_ending": "Unix"
}
},
@@ -595,54 +571,7 @@
"file": "set2/runner.c",
"settings":
{
"buffer_size": 977,
"line_ending": "Unix"
}
},
{
"settings":
{
"buffer_size": 0,
"line_ending": "Unix"
}
},
{
"file": "set1/xor_char_finder.cpp",
"settings":
{
"buffer_size": 6033,
"line_ending": "Unix"
}
},
{
"file": "utils/runner.cpp",
"settings":
{
"buffer_size": 4177,
"line_ending": "Unix"
}
},
{
"file": "main.cpp",
"settings":
{
"buffer_size": 155,
"line_ending": "Unix"
}
},
{
"file": "utils/runner.h",
"settings":
{
"buffer_size": 396,
"line_ending": "Unix"
}
},
{
"file": "set1/runner.h",
"settings":
{
"buffer_size": 597,
"buffer_size": 1785,
"line_ending": "Unix"
}
},
@@ -650,15 +579,15 @@
"file": "set2/runner.h",
"settings":
{
"buffer_size": 173,
"buffer_size": 222,
"line_ending": "Unix"
}
},
{
"file": "Makefile",
"file": "utils/common.c",
"settings":
{
"buffer_size": 936,
"buffer_size": 1273,
"line_ending": "Unix"
}
}
@@ -1058,26 +987,38 @@
},
"expanded_folders":
[
"/home/flowher/repos/MatasanoCrypto",
"/home/flowher/repos/MatasanoCrypto/set1",
"/home/flowher/repos/MatasanoCrypto/set2",
"/home/flowher/repos/MatasanoCrypto/utils",
"/home/flowher/repos/notes",
"/home/flowher/repos/notes/hacking"
],
"file_history":
[
"/home/flowher/repos/MatasanoCrypto/set1/runner.cpp",
"/home/flowher/repos/MatasanoCrypto/Makefile",
"/home/flowher/repos/MatasanoCrypto/set2/runner.h",
"/home/flowher/repos/MatasanoCrypto/set1/runner.h",
"/home/flowher/repos/MatasanoCrypto/utils/runner.h",
"/home/flowher/repos/MatasanoCrypto/main.cpp",
"/home/flowher/repos/MatasanoCrypto/utils/runner.cpp",
"/home/flowher/repos/MatasanoCrypto/set1/xor_char_finder.cpp",
"/home/flowher/repos/MatasanoCrypto/set2/runner.c",
"/home/flowher/repos/MatasanoCrypto/set1/xor_char_finder.h",
"/home/flowher/repos/MatasanoCrypto/utils/pkcs7.h",
"/home/flowher/repos/MatasanoCrypto/set2/cbc.c",
"/home/flowher/repos/MatasanoCrypto/set1/ecb.c",
"/home/flowher/repos/MatasanoCrypto/utils/pkcs7.c",
"/home/flowher/repos/MatasanoCrypto/utils/common.c",
"/home/flowher/repos/MatasanoCrypto/utils/base64.cpp",
"/home/flowher/backup_server",
"/home/flowher/repos/notes/hacking/WPA.md",
"/home/flowher/repos/notes/hacking/WPA.mde",
"/home/flowher/server_snapshot.sh",
"/home/flowher/repos/MatasanoCrypto/utils/common.h",
"/home/flowher/repos/MatasanoCrypto/set1/xor_char_finder.h",
"/home/flowher/repos/MatasanoCrypto/utils/common.c",
"/home/flowher/repos/MatasanoCrypto/Makefile",
"/home/flowher/test.c",
"/home/flowher/repos/MatasanoCrypto/main.cpp",
"/home/flowher/repos/MatasanoCrypto/set1/runner.cpp",
"/home/flowher/repos/MatasanoCrypto/utils/sets_runner.cpp",
"/home/flowher/repos/MatasanoCrypto/set1/runner.h",
"/home/flowher/repos/MatasanoCrypto/set1/xor_char_finder.cpp",
"/home/flowher/repos/MatasanoCrypto/utils/base64.cpp",
"/home/flowher/repos/MatasanoCrypto/utils/utils_tester.cpp",
"/home/flowher/repos/MatasanoCrypto/utils/hamming.c",
"/home/flowher/repos/MatasanoCrypto/utils/base64.h",
@@ -1182,25 +1123,18 @@
"/home/kkwiatkowski/amadeus_workdir/repos/02_SI/br_5-1/agent/src/Agent.cpp",
"/home/kkwiatkowski/amadeus_workdir/repos/03_Components/ACF/br_12-0-0/src/network/TCPAcceptor.cpp",
"/home/kkwiatkowski/amadeus_workdir/repos/02_SI/br_5-1/config/include/si/model/TableClientProfile.h",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/crypto/srp/srp_lib.c",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/crypto/bn/bn.h",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/crypto/bn/bn_exp.c",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/crypto/srp/srp_lcl.h",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/apps/srp.c",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/doc/crypto/SMIME_read_PKCS7.pod",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/apps/s512-req.pem",
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/Netware/set_env.bat",
"/home/kkwiatkowski/amadeus_workdir/repos/03_Components/acf_ssl/br_12-0-1/src/SSLSocket.cpp"
"/home/kkwiatkowski/storage/91_Repositories/openssl101j/crypto/srp/srp_lib.c"
],
"find":
{
"height": 25.0
"height": 35.0
},
"find_in_files":
{
"height": 90.0,
"where_history":
[
"/home/flowher/repos/MatasanoCrypto/",
"/home/flowher/repos/MatasanoCrypto/utils",
"/home/kkwiatkowski/amadeus_workdir/repos/02_SI/br_5-1/test/python/si",
"/home/kkwiatkowski/amadeus_workdir/repos/03_Components/CMG/CMG_br_12-0",
@@ -1264,6 +1198,10 @@
"case_sensitive": false,
"find_history":
[
"xor_repeatedly",
" k",
" ",
" ",
"base64_to_hex",
"void",
"VOLUME_GROUPE",
@@ -1387,11 +1325,7 @@
"Server",
"SocketAddress",
"Socket",
"56667",
"SocketTest",
"handleClient",
"runClientHandler",
"handleClient"
"56667"
],
"highlight": true,
"in_selection": false,
@@ -1454,53 +1388,24 @@
"groups":
[
{
"selected": 0,
"selected": 2,
"sheets":
[
{
"buffer": 0,
"file": "set1/runner.cpp",
"semi_transient": false,
"settings":
{
"buffer_size": 12087,
"regions":
{
},
"selection":
[
[
5533,
5533
]
],
"settings":
{
"syntax": "Packages/C++/C++.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 2418.0,
"zoom_level": 1.0
},
"stack_index": 0,
"type": "text"
},
{
"buffer": 1,
"file": "utils/common.h",
"semi_transient": false,
"settings":
{
"buffer_size": 462,
"buffer_size": 573,
"regions":
{
},
"selection":
[
[
367,
367
374,
374
]
],
"settings":
@@ -1511,24 +1416,24 @@
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 7,
"stack_index": 6,
"type": "text"
},
{
"buffer": 2,
"file": "utils/pkcs7.c",
"buffer": 1,
"file": "set2/cbc.h",
"semi_transient": false,
"settings":
{
"buffer_size": 353,
"buffer_size": 802,
"regions":
{
},
"selection":
[
[
353,
353
78,
78
]
],
"settings":
@@ -1543,50 +1448,20 @@
"type": "text"
},
{
"buffer": 3,
"file": "set1/ecb.c",
"semi_transient": false,
"settings":
{
"buffer_size": 1860,
"regions":
{
},
"selection":
[
[
1394,
1394
]
],
"settings":
{
"syntax": "Packages/C Improved/C Improved.tmLanguage",
"tab_size": 4,
"translate_tabs_to_spaces": true
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 11,
"type": "text"
},
{
"buffer": 4,
"buffer": 2,
"file": "set2/cbc.c",
"semi_transient": false,
"settings":
{
"buffer_size": 461,
"buffer_size": 1425,
"regions":
{
},
"selection":
[
[
459,
459
476,
476
]
],
"settings":
@@ -1597,102 +1472,16 @@
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 5,
"type": "text"
},
{
"buffer": 5,
"file": "utils/pkcs7.h",
"semi_transient": false,
"settings":
{
"buffer_size": 103,
"regions":
{
},
"selection":
[
[
102,
102
]
],
"settings":
{
"syntax": "Packages/C Improved/C Improved.tmLanguage"
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 12,
"type": "text"
},
{
"buffer": 6,
"file": "utils/common.c",
"semi_transient": false,
"settings":
{
"buffer_size": 1200,
"regions":
{
},
"selection":
[
[
60,
60
]
],
"settings":
{
"syntax": "Packages/C Improved/C Improved.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 3,
"type": "text"
},
{
"buffer": 7,
"file": "utils/base64.cpp",
"semi_transient": false,
"settings":
{
"buffer_size": 8075,
"regions":
{
},
"selection":
[
[
0,
0
]
],
"settings":
{
"syntax": "Packages/C++/C++.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 2,
"stack_index": 0,
"type": "text"
},
{
"buffer": 8,
"file": "set1/xor_char_finder.h",
"semi_transient": false,
"buffer": 3,
"file": "set1/ecb.h",
"semi_transient": true,
"settings":
{
"buffer_size": 3435,
"buffer_size": 469,
"regions":
{
},
@@ -1705,31 +1494,30 @@
],
"settings":
{
"syntax": "Packages/C Improved/C Improved.tmLanguage",
"translate_tabs_to_spaces": false
"syntax": "Packages/C Improved/C Improved.tmLanguage"
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 16,
"stack_index": 5,
"type": "text"
},
{
"buffer": 9,
"file": "set2/runner.c",
"buffer": 4,
"file": "set1/ecb.c",
"semi_transient": false,
"settings":
{
"buffer_size": 977,
"buffer_size": 1842,
"regions":
{
},
"selection":
[
[
924,
924
65,
65
]
],
"settings":
@@ -1746,134 +1534,20 @@
"type": "text"
},
{
"buffer": 10,
"semi_transient": false,
"settings":
{
"buffer_size": 0,
"regions":
{
},
"selection":
[
[
0,
0
]
],
"settings":
{
"default_dir": "/home/flowher/repos/MatasanoCrypto/set2",
"syntax": "Packages/Text/Plain text.tmLanguage"
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 17,
"type": "text"
},
{
"buffer": 11,
"file": "set1/xor_char_finder.cpp",
"semi_transient": false,
"settings":
{
"buffer_size": 6033,
"regions":
{
},
"selection":
[
[
1032,
1032
]
],
"settings":
{
"syntax": "Packages/C++/C++.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 13,
"type": "text"
},
{
"buffer": 12,
"file": "utils/runner.cpp",
"semi_transient": false,
"settings":
{
"buffer_size": 4177,
"regions":
{
},
"selection":
[
[
3736,
3736
]
],
"settings":
{
"syntax": "Packages/C++/C++.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 1102.0,
"zoom_level": 1.0
},
"stack_index": 6,
"type": "text"
},
{
"buffer": 13,
"file": "main.cpp",
"semi_transient": false,
"settings":
{
"buffer_size": 155,
"regions":
{
},
"selection":
[
[
39,
39
]
],
"settings":
{
"syntax": "Packages/C++/C++.tmLanguage"
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 14,
"type": "text"
},
{
"buffer": 14,
"file": "utils/runner.h",
"buffer": 5,
"file": "utils/xor.h",
"semi_transient": false,
"settings":
{
"buffer_size": 396,
"buffer_size": 308,
"regions":
{
},
"selection":
[
[
306,
306
37,
37
]
],
"settings":
@@ -1884,52 +1558,54 @@
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 15,
"stack_index": 3,
"type": "text"
},
{
"buffer": 15,
"file": "set1/runner.h",
"buffer": 6,
"file": "set2/runner.c",
"semi_transient": false,
"settings":
{
"buffer_size": 597,
"buffer_size": 1785,
"regions":
{
},
"selection":
[
[
597,
597
1777,
1777
]
],
"settings":
{
"syntax": "Packages/C Improved/C Improved.tmLanguage"
"syntax": "Packages/C Improved/C Improved.tmLanguage",
"tab_size": 4,
"translate_tabs_to_spaces": true
},
"translation.x": 0.0,
"translation.y": 0.0,
"translation.y": 199.0,
"zoom_level": 1.0
},
"stack_index": 9,
"stack_index": 2,
"type": "text"
},
{
"buffer": 16,
"buffer": 7,
"file": "set2/runner.h",
"semi_transient": false,
"settings":
{
"buffer_size": 173,
"buffer_size": 222,
"regions":
{
},
"selection":
[
[
64,
64
182,
182
]
],
"settings":
@@ -1940,35 +1616,36 @@
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 8,
"stack_index": 7,
"type": "text"
},
{
"buffer": 17,
"file": "Makefile",
"buffer": 8,
"file": "utils/common.c",
"semi_transient": false,
"settings":
{
"buffer_size": 936,
"buffer_size": 1273,
"regions":
{
},
"selection":
[
[
886,
886
1057,
1057
]
],
"settings":
{
"syntax": "Packages/Makefile/Makefile.tmLanguage"
"syntax": "Packages/C Improved/C Improved.tmLanguage",
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 0.0,
"translation.y": 73.0,
"zoom_level": 1.0
},
"stack_index": 10,
"stack_index": 8,
"type": "text"
}
]
@@ -2046,6 +1723,14 @@
"last_filter": "",
"selected_items":
[
[
"xor.h",
"MatasanoCrypto/utils/xor.h"
],
[
"common.c",
"MatasanoCrypto/utils/common.c"
],
[
"iedi.py",
"SI/test/python/si/protocol/iedi.py"
@@ -2549,14 +2234,6 @@
[
"sei_librarystaterepos",
"SI/masteragent/systemstate/src/SEI_LibraryStateRepository.cpp"
],
[
"cmdreloadtraceconf.cpp",
"SI/masteragent/magadm/CmdReloadTraceConf.cpp"
],
[
"sei_connectorcollegr",
"SI/du/include/logstats/SEI_ConnectorCollectorLogs.h"
]
],
"width": 0.0


+ 2
- 1
set1/ecb.c Dosyayı Görüntüle

@@ -32,9 +32,10 @@ uint32_t ecb_encrypt( const unsigned char* i_stream,
ret=ret_fin=0;
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);
EVP_CIPHER_CTX_set_key_length(&ctx, i_pass_size);

EVP_EncryptInit (&ctx, EVP_aes_128_ecb(), i_pass, NULL);
EVP_CIPHER_CTX_set_key_length(&ctx, i_pass_size);

EVP_EncryptUpdate(&ctx, o_buff, &ret, i_stream, i_stream_size);
EVP_EncryptFinal (&ctx, o_buff+ret, &ret_fin);
return ret+ret_fin;


+ 49
- 5
set2/cbc.c Dosyayı Görüntüle

@@ -3,6 +3,7 @@
#include "utils/common.h"
#include "set1/ecb.h"
#include <stdio.h>
#include <stdlib.h>

Result_t decrypt_cbc( uint8_t* iv,
size_t iv_len,
@@ -13,15 +14,24 @@ Result_t decrypt_cbc( uint8_t* iv,
uint8_t** output_buff,
size_t* result_len)
{
uint8_t tmpbuff[key_len];
*result_len=0;

if(buff_len % key_len != 0 )
return Result_Error;
size_t bc = buff_len / key_len;
uint8_t tmpbuff[key_len];
const size_t bc = buff_len / key_len;

if(*output_buff == NULL)
{
// allocate size of ciphertext
*output_buff = (uint8_t*) malloc( (bc*key_len) +1);
}

for(int i=0; i<bc; ++i)
{
uint8_t* i_buff_ptr = input_buff+(bc*i);
uint8_t* o_buff_ptr = *output_buff+(bc*i);
uint8_t* i_buff_ptr = input_buff+(key_len*i);
uint8_t* o_buff_ptr = (*output_buff)+(key_len*i);

// 1. Decrypt
ecb_decrypt(i_buff_ptr, key_len /*block size*/, key, key_len, tmpbuff);

@@ -30,8 +40,9 @@ Result_t decrypt_cbc( uint8_t* iv,

// 3. Change iv with block
iv = i_buff_ptr;
printf("T");
*result_len += key_len;
}

return Result_OK;
}

@@ -45,5 +56,38 @@ Result_t encrypt_cbc( uint8_t* iv,
uint8_t** output_buff,
size_t* result_len)
{
uint8_t tmpbuff[key_len];
*result_len=0;

if(buff_len % key_len != 0 )
return Result_Error;

if( iv_len != key_len )
return Result_Error;

const size_t bc = buff_len / key_len;

if(*output_buff == NULL)
{
*output_buff = (uint8_t*) malloc( bc*key_len );
}

for(int i=0; i<bc; ++i)
{
uint8_t* i_buff_ptr = input_buff+(key_len*i);
uint8_t* o_buff_ptr = (*output_buff)+(key_len*i);

// 2. Xor IV
xor_repeatedly(iv, key_len, i_buff_ptr, key_len, tmpbuff);

// 1. Decrypt
ecb_encrypt(tmpbuff, key_len /*block size*/, key, key_len, o_buff_ptr);

// 3. Change iv with block
iv = o_buff_ptr;

*result_len += key_len;
}

return Result_OK;
}

+ 26
- 2
set2/runner.c Dosyayı Görüntüle

@@ -56,6 +56,30 @@ FUNC(cbc_decrypt_test)
Result_t res = Result_Error;

res = load_base64_to_hex("etc/set2_t2.txt", buff, &len);
decrypt_cbc(iv, 16, buff, len, key, 16, &plaintext, &len);

uint8_t** p = &plaintext;
decrypt_cbc(iv, 16, buff, len, key, 16, p, &len);
printf("%s\n", plaintext);
}
FUNC_E

FUNC(cbc_enc_dec_test)
{
uint8_t iv[16] = {0};
uint8_t* ciphertext = NULL;
uint8_t key[17] = "YELLOW SUBMARINE"; // 16+'\0' = 17
size_t len = 0;
uint8_t buff[4096] = {0};
Result_t res = Result_Error;

uint8_t test_text[49] = "The quick brown fox jumps over the lazy mad dog.";

uint8_t** p = &ciphertext;
uint8_t* b1 = &buff[0];
uint8_t** b = &b1;
encrypt_cbc(iv, 16, test_text, sizeof(test_text)-1, key, 16, p, &len);
decrypt_cbc(iv, 16, *p, len, key, 16, b, &len);
printf("%s\n", buff);
}
FUNC_E
FUNC_E


+ 2
- 0
set2/runner.h Dosyayı Görüntüle

@@ -3,6 +3,7 @@

void pkcs7_test();
void cbc_decrypt_test();
void cbc_enc_dec_test();

struct SET2
{
@@ -10,6 +11,7 @@ struct SET2
{
pkcs7_test();
cbc_decrypt_test();
cbc_enc_dec_test();
}
};



Yükleniyor…
İptal
Kaydet