diff --git a/prj/Matasano.sublime-workspace b/prj/Matasano.sublime-workspace index 430c7f7..929cc8a 100644 --- a/prj/Matasano.sublime-workspace +++ b/prj/Matasano.sublime-workspace @@ -3,6 +3,30 @@ { "selected_items": [ + [ + "padd", + "padded_attribs" + ], + [ + "Resu", + "Result_OK" + ], + [ + "Resul", + "Result_Error" + ], + [ + "ou", + "output" + ], + [ + "kP", + "kPadding_PKCS7" + ], + [ + "Reus", + "Result_Error" + ], [ "outu", "output_len" @@ -51,10 +75,6 @@ "Re", "Result_OK" ], - [ - "Resu", - "Result_t" - ], [ "padded", "padded_input_len" @@ -67,10 +87,6 @@ "unp", "unpad_len" ], - [ - "padd", - "padding_value" - ], [ "Res", "Result_Error" @@ -107,10 +123,6 @@ "TCASE", "TCASE_E" ], - [ - "ou", - "output_len" - ], [ "input", "input_len" @@ -502,124 +514,48 @@ [ "isDecod", "isDecodeCnxOriginSet" - ], - [ - "ksei", - "kSEIProperty_POISeparators" - ], - [ - "handleSeri", - "handleSeriesDefinition" - ], - [ - "kTableSeries", - "kTableSeriesCnx" ] ] }, "buffers": [ - { - "file": "/home/flowher/repos/MatasanoCrypto/sol/set1.h", - "settings": - { - "buffer_size": 623, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/tst/utils.h", - "settings": - { - "buffer_size": 396, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/sol/set2.c", - "settings": - { - "buffer_size": 15030, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.c", - "settings": - { - "buffer_size": 6483, - "line_ending": "Unix" - } - }, { "file": "/home/flowher/repos/MatasanoCrypto/sol/set2.h", "settings": { - "buffer_size": 551, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.h", - "settings": - { - "buffer_size": 459, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/src/common.c", - "settings": - { - "buffer_size": 2975, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/sol/set1.cpp", - "settings": - { - "buffer_size": 12519, + "buffer_size": 693, "line_ending": "Unix" } }, { - "file": "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.cpp", + "file": "/home/flowher/repos/MatasanoCrypto/src/hamming.h", "settings": { - "buffer_size": 6065, + "buffer_size": 343, "line_ending": "Unix" } }, { - "file": "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.h", - "settings": - { - "buffer_size": 3524, - "line_ending": "Unix" - } - }, - { - "file": "/home/flowher/repos/MatasanoCrypto/src/xor.c", + "file": "/home/flowher/repos/MatasanoCrypto/sol/set2.c", "settings": { - "buffer_size": 502, + "buffer_size": 15244, "line_ending": "Unix" } }, { - "file": "/home/flowher/repos/MatasanoCrypto/src/xor.h", + "file": "/home/flowher/repos/MatasanoCrypto/src/main.cpp", "settings": { - "buffer_size": 357, + "buffer_size": 377, "line_ending": "Unix" } }, { - "file": "/home/flowher/repos/MatasanoCrypto/sol/etc/set2_t2.txt", + "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.c", "settings": { - "buffer_size": 3904, + "buffer_size": 8092, "line_ending": "Unix" } } @@ -1043,19 +979,28 @@ ], "file_history": [ - "/home/flowher/repos/MatasanoCrypto/src/xor.c", - "/home/flowher/repos/MatasanoCrypto/src/hamming.c", - "/home/flowher/repos/MatasanoCrypto/Makefile", "/home/flowher/repos/MatasanoCrypto/src/pkcs7.c", + "/home/flowher/repos/OpenCrypto/test/destest.c", + "/home/flowher/repos/MatasanoCrypto/sol/set2.c", + "/home/flowher/repos/MatasanoCrypto/src/common.h", + "/home/flowher/repos/MatasanoCrypto/sol/set1.cpp", + "/home/flowher/repos/MatasanoCrypto/test.c", + "/home/flowher/repos/MatasanoCrypto/sol/set1.h", + "/home/flowher/repos/MatasanoCrypto/tst/utils.h", + "/home/flowher/repos/MatasanoCrypto/sol/set2.h", + "/home/flowher/repos/MatasanoCrypto/sol/etc/set2_t2.txt", + "/home/flowher/repos/MatasanoCrypto/src/xor.h", + "/home/flowher/repos/MatasanoCrypto/src/xor.c", + "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.cpp", + "/home/flowher/repos/MatasanoCrypto/src/common.c", + "/home/flowher/repos/MatasanoCrypto/src/enc_modes.h", "/home/flowher/repos/MatasanoCrypto/src/enc_modes.c", + "/home/flowher/repos/MatasanoCrypto/Makefile", + "/home/flowher/repos/MatasanoCrypto/src/hamming.c", "/home/flowher/repos/OpenCrypto/crypto/evp/evp_enc.c", - "/home/flowher/repos/MatasanoCrypto/test.c", "/home/flowher/konto/list.txt", - "/home/flowher/repos/MatasanoCrypto/src/common.h", "/home/flowher/repos/MatasanoCrypto/src/pkcs7.h", - "/home/flowher/repos/MatasanoCrypto/sol/set2.c", "/home/flowher/test.c", - "/home/flowher/repos/MatasanoCrypto/sol/set2.h", "/home/flowher/repos/OpenCrypto/util/incore", "/home/flowher/test.cpp", "/home/flowher/Work/goldfish_env/usr/bin/mkbootimg", @@ -1063,20 +1008,16 @@ "/home/flowher/repos/MatasanoCrypto/out", "/home/flowher/repos/OpenCrypto/crypto/err/err.c", "/home/flowher/repos/MatasanoCrypto/src/base64.cpp", - "/home/flowher/repos/MatasanoCrypto/sol/set1.cpp", - "/home/flowher/repos/MatasanoCrypto/src/common.c", "/home/flowher/ripi_pass", "/home/flowher/repos/notes/french/words/words.md", "/home/flowher/Work/zshrc", "/home/flowher/repos/MatasanoCrypto/tst/utils.cpp", "/home/flowher/Work/.source", - "/home/flowher/repos/MatasanoCrypto/src/enc_modes.h", "/home/flowher/repos/MatasanoCrypto/src/cbc.c", "/home/flowher/repos/MatasanoCrypto/src/cbc.h", "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.h", "/home/flowher/repos/MatasanoCrypto/src/base64.h", "/home/flowher/repos/MatasanoCrypto/suppressions.valgrind", - "/home/flowher/repos/MatasanoCrypto/tst/utils.h", "/home/flowher/repos/MatasanoCrypto/src/ecb.c", "/home/flowher/.config/sublime-text-3/Packages/User/Preferences.sublime-settings", "/home/flowher/repos/MatasanoCrypto/prj/Matasano.sublime-project", @@ -1165,12 +1106,7 @@ "/home/kkwiatkowski/amadeus_workdir/repos/01_OTF/br_12-0/include/otf/api/TransactionContextInterface.h", "/home/kkwiatkowski/amadeus_workdir/repos/01_OTF/br_12-0/include/otf/TransactionContext.h", "/home/kkwiatkowski/amadeus_workdir/repos/Tracer_br_12-0-0/test/data/TestLg_IoReactorClosure_AsyncV3", - "/home/kkwiatkowski/amadeus_workdir/repos/Tracer_br_12-0-0/test/data/Test1001_res", - "/home/kkwiatkowski/storage/91_Repositories/openssl101j/MacOS/TODO", - "/home/kkwiatkowski/amadeus_workdir/repos/03_Components/acf_ssl/br_12-0-1/src/SSLEngine.cpp", - "/home/kkwiatkowski/amadeus_workdir/repos/03_Components/acf_ssl/br_12-0-1/src/SSLEngineContext.cpp", - "/home/kkwiatkowski/amadeus_workdir/repos/03_Components/acf_ssl/br_12-0-1/test/src/SSLSocketTest.cpp", - "/home/kkwiatkowski/amadeus_workdir/repos/03_Components/acf_ssl/br_12-0-1/include/acf/ssl/SSLOptions.h" + "/home/kkwiatkowski/amadeus_workdir/repos/Tracer_br_12-0-0/test/data/Test1001_res" ], "find": { @@ -1245,6 +1181,18 @@ "case_sensitive": false, "find_history": [ + "check_ciphertext", + "encryption_oracle", + "local_input_len", + "ecb_encrypt", + "CryptoAttribs_t", + "390", + "ERROR", + "error", + "end", + "crypt(", + "ALLOK", + "Cbc(", "xor_repe", "xor_repeatedly", "encode_decode_openssl", @@ -1360,19 +1308,7 @@ "EncryptionContent_t", "ciphertext", "i_content.", - "ctx.", - "Init(", - "Cbc", - "o_buff", - "utils", - "sol/", - "SOL_", - "etc/", - "etc", - "utils", - "src/", - "set", - "set-" + "ctx." ], "highlight": true, "in_selection": false, @@ -1438,24 +1374,24 @@ "groups": [ { - "selected": 3, + "selected": 2, "sheets": [ { "buffer": 0, - "file": "/home/flowher/repos/MatasanoCrypto/sol/set1.h", + "file": "/home/flowher/repos/MatasanoCrypto/sol/set2.h", "semi_transient": false, "settings": { - "buffer_size": 623, + "buffer_size": 693, "regions": { }, "selection": [ [ - 488, - 488 + 469, + 469 ] ], "settings": @@ -1468,24 +1404,24 @@ "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 12, + "stack_index": 4, "type": "text" }, { "buffer": 1, - "file": "/home/flowher/repos/MatasanoCrypto/tst/utils.h", - "semi_transient": false, + "file": "/home/flowher/repos/MatasanoCrypto/src/hamming.h", + "semi_transient": true, "settings": { - "buffer_size": 396, + "buffer_size": 343, "regions": { }, "selection": [ [ - 396, - 396 + 0, + 0 ] ], "settings": @@ -1496,7 +1432,7 @@ "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 9, + "stack_index": 3, "type": "text" }, { @@ -1505,15 +1441,15 @@ "semi_transient": false, "settings": { - "buffer_size": 15030, + "buffer_size": 15244, "regions": { }, "selection": [ [ - 7854, - 7854 + 12097, + 12097 ] ], "settings": @@ -1523,57 +1459,55 @@ "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 2856.0, + "translation.y": 5990.0, "zoom_level": 1.0 }, - "stack_index": 1, + "stack_index": 0, "type": "text" }, { "buffer": 3, - "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.c", + "file": "/home/flowher/repos/MatasanoCrypto/src/main.cpp", "semi_transient": false, "settings": { - "buffer_size": 6483, + "buffer_size": 377, "regions": { }, "selection": [ [ - 6003, - 6003 + 317, + 317 ] ], "settings": { - "syntax": "Packages/C Improved/C Improved.tmLanguage", - "tab_size": 4, - "translate_tabs_to_spaces": true + "syntax": "Packages/C++/C++.tmLanguage" }, "translation.x": 0.0, - "translation.y": 1821.0, + "translation.y": 0.0, "zoom_level": 1.0 }, - "stack_index": 0, + "stack_index": 1, "type": "text" }, { "buffer": 4, - "file": "/home/flowher/repos/MatasanoCrypto/sol/set2.h", + "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.c", "semi_transient": false, "settings": { - "buffer_size": 551, + "buffer_size": 8092, "regions": { }, "selection": [ [ - 363, - 363 + 8092, + 8092 ] ], "settings": @@ -1583,238 +1517,11 @@ "translate_tabs_to_spaces": true }, "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 7, - "type": "text" - }, - { - "buffer": 5, - "file": "/home/flowher/repos/MatasanoCrypto/src/enc_modes.h", - "semi_transient": false, - "settings": - { - "buffer_size": 459, - "regions": - { - }, - "selection": - [ - [ - 78, - 78 - ] - ], - "settings": - { - "syntax": "Packages/C Improved/C Improved.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 11, - "type": "text" - }, - { - "buffer": 6, - "file": "/home/flowher/repos/MatasanoCrypto/src/common.c", - "semi_transient": false, - "settings": - { - "buffer_size": 2975, - "regions": - { - }, - "selection": - [ - [ - 2461, - 2461 - ] - ], - "settings": - { - "syntax": "Packages/C Improved/C Improved.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 1461.0, - "zoom_level": 1.0 - }, - "stack_index": 8, - "type": "text" - }, - { - "buffer": 7, - "file": "/home/flowher/repos/MatasanoCrypto/sol/set1.cpp", - "semi_transient": false, - "settings": - { - "buffer_size": 12519, - "regions": - { - }, - "selection": - [ - [ - 4736, - 4736 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage", - "translate_tabs_to_spaces": false - }, - "translation.x": 0.0, - "translation.y": 1492.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "type": "text" - }, - { - "buffer": 8, - "file": "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.cpp", - "semi_transient": false, - "settings": - { - "buffer_size": 6065, - "regions": - { - }, - "selection": - [ - [ - 2555, - 2555 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage", - "translate_tabs_to_spaces": false - }, - "translation.x": 0.0, - "translation.y": 285.0, - "zoom_level": 1.0 - }, - "stack_index": 6, - "type": "text" - }, - { - "buffer": 9, - "file": "/home/flowher/repos/MatasanoCrypto/src/xor_char_finder.h", - "semi_transient": true, - "settings": - { - "buffer_size": 3524, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "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": 5, - "type": "text" - }, - { - "buffer": 10, - "file": "/home/flowher/repos/MatasanoCrypto/src/xor.c", - "semi_transient": false, - "settings": - { - "buffer_size": 502, - "regions": - { - }, - "selection": - [ - [ - 334, - 334 - ] - ], - "settings": - { - "syntax": "Packages/C Improved/C Improved.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, + "translation.y": 3802.0, "zoom_level": 1.0 }, "stack_index": 2, "type": "text" - }, - { - "buffer": 11, - "file": "/home/flowher/repos/MatasanoCrypto/src/xor.h", - "semi_transient": false, - "settings": - { - "buffer_size": 357, - "regions": - { - }, - "selection": - [ - [ - 20, - 20 - ] - ], - "settings": - { - "syntax": "Packages/C Improved/C Improved.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 4, - "type": "text" - }, - { - "buffer": 12, - "file": "/home/flowher/repos/MatasanoCrypto/sol/etc/set2_t2.txt", - "semi_transient": false, - "settings": - { - "buffer_size": 3904, - "regions": - { - }, - "selection": - [ - [ - 6, - 6 - ] - ], - "settings": - { - "syntax": "Packages/MarkdownEditing/Markdown.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 10, - "type": "text" } ] } @@ -1895,6 +1602,14 @@ "last_filter": "", "selected_items": [ + [ + "set2.h", + "MatasanoCrypto/sol/set2.h" + ], + [ + "pkcs7c", + "MatasanoCrypto/src/pkcs7.c" + ], [ "xor_cha", "MatasanoCrypto/src/xor_char_finder.cpp" @@ -2398,14 +2113,6 @@ [ "localconnectionha", "SI/connector/src/LocalConnectionHandler.cpp" - ], - [ - "cmdnewsetdelbasepeakversion.h", - "SI/masteragent/magadm/CmdNewSetDelBasePeakVersion.h" - ], - [ - "cmdnewsetdelbasepeakversionte", - "SI/masteragent/test/src/CmdNewSetDelBasePeakVersionTest.cpp" ] ], "width": 0.0 diff --git a/sol/set2.c b/sol/set2.c index 37d5c77..65d98e5 100644 --- a/sol/set2.c +++ b/sol/set2.c @@ -257,8 +257,8 @@ TCASE_E /* ------------------------------------------------------------------------- Checks if ciphertext is encrypted with ECB or CBC. - Requirement: In order to work, plaintext must encrypt to 6 blocks - and all the letters in the PT must be exactly the same. + Requirement: In order to work, plaintext must encrypt up to 6 blocks (with + padding) and all the letters in the PT must be exactly the same. Returns: * 0 : if ciphertext encrypted with ECB * 1 : if ciphertext encrypted with CBC @@ -270,7 +270,9 @@ uint8_t check_ciphertext(const uint8_t* ciphertext, uint32_t len ) if( (len < 6*bs) || (len>7*bs) ) return 0xFF; - for(uint32_t i=1; i<6; ++i) + // check blocks 2,3,4 as first have prepaned bytes, 5th also, 6th can have padding + // eventually 7th may be fully padded. + for(uint32_t i=1; i<4; ++i) { if( memcmp(ciphertext+(bs*i), ciphertext+(bs*(i+1)), bs) != 0) return 1; // Two blocks differ -> must be CBC @@ -370,19 +372,16 @@ Result_t encryption_oracle( const uint8_t* pt, TCASE(encode_oracle_test) { - for(size_t i=0; i<100; ++i) + // let's run it 1000 times + for(size_t i=0; i<1000; ++i) { - printf("Round: %u\n",i); uint8_t plaintext[5*16] = {0}; uint8_t ciphertext[7*16] = {0}; uint8_t mode = 0xFF; uint8_t guessed_mode = 0xFF; uint32_t ciphertext_len = 7*16; - // set data in blocks so that - // first block will be filled with 111... - // second block with 2222... - // ... + // set data in blocks so that 5 blocks is 11111... memset(plaintext, 1, 5*16); Result_t ret = encryption_oracle(plaintext, 5*16, ciphertext, &ciphertext_len, &mode); CHECK(ret == Result_OK, (uint8_t*)"Error occured on encryption");