Krzysztof Kwiatkowski 9 лет назад
Родитель
Сommit
0b174ec3d4
2 измененных файлов: 108 добавлений и 402 удалений
  1. +100
    -393
      prj/Matasano.sublime-workspace
  2. +8
    -9
      sol/set2.c

+ 100
- 393
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


+ 8
- 9
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");


Загрузка…
Отмена
Сохранить