Compare commits

...

9 Commits

Author SHA1 Message Date
742274120f ADD D1 report 2025-04-20 11:49:33 +02:00
3486fd86b1 ADD A3 + D1 solution and report 2025-04-20 11:47:01 +02:00
1e7895f21a ADD A3 solution, miss report 2025-04-13 15:00:04 +02:00
bf645048e6 ADD week 5 2025-03-31 16:33:42 +02:00
86f265f22d ADD week 4 2025-03-31 16:31:52 +02:00
84135a321e ADD week 3 2025-03-12 11:12:06 +01:00
bf74dd7e22 ADD Yann verificator 2025-03-05 19:36:43 +01:00
914fbc5d6d ADD exercices week 2 2025-02-27 19:27:10 +01:00
9df5ce5b66 ADD exercices week 1 2025-02-24 16:05:42 +01:00
5173 changed files with 578246 additions and 0 deletions

14
01-VeryEasy1/VE1.txt Normal file
View File

@ -0,0 +1,14 @@
1. What compiler was used to build this executable?
GCC
2. What is the target platform for this executable?
x86_64
3. Is this executable linked statically or dynamically?
dynamically linked
4. What kind of reverse-engineering information is still embedded in this executable?
?
5. What is the secret password hardcoded into this executable? You need to email this value to pascal+sre25@mod-p.ch before Feb 24th, 2025, 12h00 CET to validate this lab and receive 1 point.
+3kfRmlG1rqb

View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a801f6f84e95338696086533" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="VE1" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:VE1:a801f6f84e95338696086533
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:VE1:a801f6f84e95338696086533
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="VeryEasy01:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a801f6f822125986500653561" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_a801f6f84e95338696086533" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_a801f6f84e95338696086533:a801f6f822125986500653561
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_a801f6f84e95338696086533
IDSET:/udf_a801f6f84e95338696086533:a801f6f822125986500653561

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

0
01-VeryEasy2/VE2 Normal file → Executable file
View File

0
01-VeryEasy2/VE2.gpr Normal file
View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a801f6fb66758882284485789" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="VE2" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:VE2:a801f6fb66758882284485789
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:VE2:a801f6fb66758882284485789
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="VE2:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a801f6fa08361347999654449" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_a801f6fb66758882284485789" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_a801f6fb66758882284485789:a801f6fa08361347999654449
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_a801f6fb66758882284485789
IDSET:/udf_a801f6fb66758882284485789:a801f6fa08361347999654449

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

8
01-VeryEasy2/VE2.txt Normal file
View File

@ -0,0 +1,8 @@
1. Was this executable compiled with debugging symbols?
yes, with debug_info
2. How is protected the secret password hard-coded into this executable?
By shift of 'W'
3. What is the secret password hard-coded into this executable? You must send this value by email to pascal+sre25@mod-p.ch before Mar. 3rd, 2025, 12h00 CET to validate this lab and get 1 point.
JSHGnQumN+sQ

43
01-VeryEasy2/code.c Normal file
View File

@ -0,0 +1,43 @@
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <sys/types.h>
char ENCSECRETPASSWORD[];
int main(int param_1, char* *param_2) {
int8_t output_value;
size_t input_length;
char acStack_19 [13];
if (param_1 == 2) {
input_length = strlen((char *)param_2[1]);
if (input_length == 12) {
for (uint8_t i = 0; i < 13; i++) {
acStack_19[i] = ENCSECRETPASSWORD[i] + 'W'; // JSHGnQumN+sQ
//f3 fc f1 f0 17 fa 1e 16 f7 d4 1c fa a9
//
}
for (uint8_t i = 0; i < 13; i++) {
if (acStack_19[i] != *(char *)((long)i + param_2[1])) {
fwrite("\nWrong password ! Try again...\n\n",1,32,stderr);
return 1;
}
}
fprintf(stderr,"\nCongratulations ! The right password is indeed %s :-)\n\n",param_2[1]);
output_value = 35;
}
else {
fwrite("\nWrong password ! Try again...\n\n",1,32,stderr);
output_value = 1;
}
}
else {
fwrite("\nMSE-SRE Challenge VE2 --- Enjoy !\n",1,35,stderr);
fprintf(stderr,"\nUsage: %s <password>\n\n",*param_2);
output_value = 1;
}
return output_value;
}

16
01-VeryEasy2/foo.c Normal file
View File

@ -0,0 +1,16 @@
#include <stdio.h>
#include <stdint.h>
int main() {
char foo[14] = {0xf3, 0xfc, 0xf1, 0xf0, 0x17, 0xfa, 0x1e, 0x16, 0xf7, 0xd4, 0x1c, 0xfa, 0xa9, '\0'};
for (uint8_t i = 0; i<13; i++) {
foo[i] += 'W';
}
foo[13] = '\0';
printf("%s \r\t", foo);
return 0;
}
void myfunc(int a, ...) {
}

0
01-VeryEasy3/VE3.gpr Normal file
View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a2e40c5a22540267163090739" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="VE3" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:VE3:a2e40c5a22540267163090739
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/VE3
IDSET:/VE3:a2e40c5a22540267163090739

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="VE3:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a2e40c594c340888329008539" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_a2e40c5a22540267163090739" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_a2e40c5a22540267163090739:a2e40c594c340888329008539
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_a2e40c5a22540267163090739
IDSET:/udf_a2e40c5a22540267163090739:a2e40c594c340888329008539

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

8
01-VeryEasy3/VE3.txt Normal file
View File

@ -0,0 +1,8 @@
1. What is the target platform of this executable?
ARM32
2. Was this executable stripped?
no
3. What is the secret password hardcoded into this executable? You must send this value by email to pascal+sre25@mod-p.ch before Mar. 10th, 2025, 12h00 CET to validate this lab and get 1 point.
33X5yPBehep4

52
01-VeryEasy3/code.c Normal file
View File

@ -0,0 +1,52 @@
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <sys/types.h>
bool check_password(char *param_1) {
bool uVar1;
//33X5yPBehep4
if (((((param_1[0] == '3') && (param_1[1] == '3')) && (param_1[2] == 'X')) &&
((((param_1[3] == '5' && (param_1[4] == 'y')) &&
((param_1[5] == 'P' && ((param_1[6] == 'B' && (param_1[7] == 'e')))))) &&
(param_1[8] == 'h')))) &&
(((param_1[9] == 'e' && (param_1[10] == 'p')) && (param_1[11] == '4')))) {
uVar1 = true;
}
else {
uVar1 = false;
}
return uVar1;
}
uint64_t main(int param_1,char* *param_2) {
size_t pw_length;
bool pw_correct;
uint64_t uVar3;
if (param_1 == 2) {
pw_length = strlen((char *)param_2[1]);
if (pw_length == 12) {
pw_correct = check_password(param_2[1]);
if (pw_correct == false) {
fwrite("\nWrong password ! Try again...\n\n",1,0x20,stderr);
uVar3 = 1;
}
else {
fprintf(stderr,"\nCongratulations ! The right password is indeed %s :-)\n\n",param_2[1]);
uVar3 = 0;
}
}
else {
fwrite("\nWrong password ! Try again...\n\n",1,0x20,stderr);
uVar3 = 1;
}
}
else {
fwrite("\nMSE-SRE Challenge VE3 --- Enjoy !\n",1,0x23,stderr);
fprintf(stderr,"\nUsage: %s <password>\n\n",*param_2);
uVar3 = 1;
}
return uVar3;
}

0
02-Easy1/E1 Normal file → Executable file
View File

12
02-Easy1/E1.txt Normal file
View File

@ -0,0 +1,12 @@
Questions
1. What compiler was used to build this executable?
GCC
2. What is the target platform for this executable?
x86_64
3. Is this executable linked statically or dynamically?
dynamically linked
4. What is the secret password hardcoded into this executable? You must email this value to pascal+sre25@mod-p.ch before Feb 24th, 2025, 12h00 CET to validate this lab and receive 5 points.
DwMxRPg1cjmVTHdV

0
02-Easy1/Easy01.gpr Normal file
View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a801f6f9e1526096743070060" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="E1" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E1:a801f6f9e1526096743070060
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E1:a801f6f9e1526096743070060
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="Easy01:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a82f6b4fd12437693729253" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_a801f6f9e1526096743070060" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_a801f6f9e1526096743070060:c0a82f6b4fd12437693729253
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_a801f6f9e1526096743070060
IDSET:/udf_a801f6f9e1526096743070060:c0a82f6b4fd12437693729253

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

55
02-Easy1/code.c Normal file
View File

@ -0,0 +1,55 @@
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <sys/types.h>
ulong SECRETPASSWORD;
int main(int param_1, int *param_2) {
char* foo = "Hello";
uint8_t string_equality;
uint8_t output_value;
size_t input_length;
uint8_t local_20;
uint8_t itr;
local_20 = 1;
if (true /*param_1 == 2*/) {
itr = 0;
while( true ) {
//input_length = strlen((char *)param_2[1]); // 16
input_length = strlen(foo); // 16
if (16 <= itr) break;
local_20 = (local_20 * 3) % 257;
itr = itr + 1;
}
string_equality = strncmp(
// SECRETPASSWORD = 00402e82
// SECRETPASSWORD + ( (249+226)%257 ) * 8
// SECRETPASSWORD + (475%257) * 8
// SECRETPASSWORD + 218 * 8
// SECRETPASSWORD + 1744
*(char **)(SECRETPASSWORD + (ulong)((local_20 + 226) % 257) * 8),
foo,
16
);
// => DwMxRPg1cjmVTHdV
if (string_equality == 0) {
fprintf(stderr,"\nCongratulations ! The right password is indeed %s :-)\n\n",param_2[1]);
output_value = 0;
}
else {
fwrite("\nWrong password ! Try again...\n\n", 1, 32, stderr);
output_value = 1;
}
}
else {
fwrite("\nMSE-SRE Challenge E1 --- Enjoy !\n", 1, 34, stderr);
fprintf(stderr, "\nUsage: %s <password>\n\n", *param_2);
output_value = 1;
}
return output_value;
}

0
02-Easy2/E2 Normal file → Executable file
View File

0
02-Easy2/E2.gpr Normal file
View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a82eeaa7971421479596701" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="E2" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E2:c0a82eeaa7971421479596701
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E2:c0a82eeaa7971421479596701
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="E2:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a82ee8e31106056027371797" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_c0a82eeaa7971421479596701" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_c0a82eeaa7971421479596701:c0a82ee8e31106056027371797
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_c0a82eeaa7971421479596701
IDSET:/udf_c0a82eeaa7971421479596701:c0a82ee8e31106056027371797

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

130
02-Easy2/E2.txt Normal file
View File

@ -0,0 +1,130 @@
1. What is the algorithm used to check the validity of a password?
```c
for (int i = 0; i < 4; i++) {
Seed[i] ^= password[i] ^ password[i + 4] ^ password[i + 8];
}
```
2. Can you break this password checker, i.e., implementing a generator of valid passwords?
You must send 16 different valid passwords by email to pascal+sre25@mod-p.ch before Mar. 3rd, 2025, 12h00 CET to validate this lab and get 5 points.
c.f. text.c
remiB1RUZO10
l96nhRI/npqM
hRI/npqMl96n
npqMl96nhRI/
mjwdb6V1eG/Y
P6TsnIh8Td2G
Imdln4Z1MB0Q
YqgwfAXMU+16
dE+BV2wwXlR9
x130TYTwFsiK
OOYaH3gYmg04
ta8aw8wYiBA4
9MS867rvea/B
IbY3LH2So1el
Xb/zgHGDU1f2
Q64Csfi6HKSy
remivFRVn813
n813remivFRV
vFRVn813remi
remiRUR2J+1W
remisFSQk804
remiOH7+W6TN
remiNGU2V96W
remi3IP5+73P
remiAJP4Y43Q
remipGZSh996
remiQJ03I4SV
remiQH1QI6R4
remiB76WZIU2
remi/8S/7F0J
reminUZ/v+9J
remiq0W/iN4J
remiiI//q7LJ
remiV8+RNFH7
remiA43JYJP/
remiHNRSP016
remiN76UVIU0
remis06UkNU0
remiM90UUGS0
remio8S7wF0R
reminK3Wv5P2
remiSGVRK957
remip/6NhQU+
remij32TrMQ1
remi7F4//8WJ
remi+9U43G6Q
remiq1+QiOH4
remivU3Nn+P+
remiMLR+U21N
remiu8L/mF/J
remiKI11S7RT
remiNGQ5V92P
remiT46/LJUJ
remi+9203GQU
remiQG9UI9Z0
remiMQS1U/0T
remivF1Vn8R3
remiZ7S6BI0S
remiU4/6MJLS
remiOLV6W25S
remiYI+RA7H7
remiWKV6O55S
remiPLV6H25S
remio8WSwF46
remiV1+1NOHT
remiHK7WP5T2
remi+N7T30T1
remi/UPR7+37
remi33S3+M0V
remiY/27AQQR
remiI1H4QO+Q
remim5/PuKL5
remin895vFZP
remiuFW7m84R
remii+SRqU07
remisHSWk602
remimHTRu677
remia09PyNZ5
remioL+Jw2H/
remiqGZSi996
remiAI45Y7WP
remiJURWR+12
remiZIV2B75W
remimMT6u37S
remioLW0w24U
remi30T6+N7S
remip2U6hL6S
remiAQ71Y/TT
remiiG+Vq9H3
remiiNZ1q09T
remiP5PTHK31
remiWJU5O46P
remi/UV67+5S
remiyNQ/a02J
remi3M44+3WQ
remil2VUtL50
remih/90pQZU
remia+3NyUP+
remiQ1Z7IO9R
remiz3L3bM/V
remiB73RZIP7
remiKHQSS626
remiAOVQY154
remiQFH1I8+T
remiSMPUK330
remiOF4TW8W1
remihNP+p03N
remilF5Ut8V0
remis30+kMSN
remiOH4WW6W2
remiWK4WO5W2
remiO534WKPQ
remiv49QnJZ4
remi3I64+7UQ
remiyO91a1ZT
remipJ21h4QT
remiLLU5T26P
remiwFVUo850

39
02-Easy2/code.c Normal file
View File

@ -0,0 +1,39 @@
#include <stdio.h>
#include <stdint.h>
#include <string.h>
int main(int param_1,char* *param_2) {
char* input_string;
size_t input_length;
char* pcVar2;
char* pcVar3;
uint32_t uVar4;
if (param_1 == 2) {
input_string = (char *)param_2[1];
input_length = strlen(input_string);
if (input_length == 12) {
uVar4 = 0x56253667;
pcVar2 = input_string;
do {
pcVar3 = pcVar2 + 4;
uVar4 = uVar4 ^ ((uint8_t)pcVar2[0] << 24 | (uint8_t)pcVar2[1] << 16 | (uint8_t)pcVar2[2] << 8 | (uint8_t)pcVar2[3]);
pcVar2 = pcVar3;
} while (input_string + 12 != pcVar3);
if (uVar4 == 0x3c3e386b) {
fprintf(stderr,"\nCongratulations ! A right password is indeed %s :-)\n\n",input_string);
return 0;
}
fwrite("\nWrong password ! Try again...\n\n", 1, 0x20,stderr);
} else {
fwrite("\nWrong password length ! Try again...\n\n", 1, 0x20,stderr);
}
}
else {
fwrite("\nMSE-SRE Challenge E2 --- Enjoy !\n", 1, 0x22,stderr);
fwrite("\nWhat I need is 1024 passwords passing the check!\n",1,0x32,stderr);
fprintf(stderr, "\nUsage: %s <password>\n\n", *param_2);
}
return 1;
}

95
02-Easy2/smallGenerator.c Normal file
View File

@ -0,0 +1,95 @@
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
const uint16_t NBR_PASSWORDS_REQUESTED = 100;
bool hash(char* str){
char* str1 = str;
char* str2 = str;
uint32_t foo = 0x56253667;
do {
str2 = str1 + 4;
foo = foo ^ ((uint8_t)*str1 << 24 | (uint8_t)str1[1] << 16 | (uint8_t)str1[2] << 8 | (uint8_t)str1[3]);
str1 = str2;
} while (str + 12 != str2);
return foo == 0x3c3e386b ? true : false;
}
const char list[] = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'/', '+'
};
char give_char(uint8_t index){
if (index >= sizeof(list)) {
printf("Error: Index out of bounds, max %zu\n", sizeof(list));
exit(1);
}
return list[index];
}
int main(int argc, char *argv[]) {
srand(time(NULL));
// seed = 0x56253667;
// answer = 0x3c3e386b;
uint8_t mdw[4] = {0x6a, 0x1b, 0x0e, 0x0c};
char password[13];
const uint8_t max_char = sizeof(list);
password[0] = 'r';
password[1] = 'e';
password[2] = 'm';
password[3] = 'i';
uint8_t foo[4];
for(uint16_t n = 0; n < NBR_PASSWORDS_REQUESTED; n++) {
for(uint8_t i = 0; i < 4; i++) {
foo[i] = password[i] ^ mdw[i];
}
for(uint8_t i = 0; i < 4; i++) {
// password[i] = give_char(rand()%max_char);
uint32_t counter = 0;
// for(uint8_t c2 = 0; c2 < max_char; c2++) {
// }
do{
password[i+4] = list[rand()%max_char];
for(uint8_t j = 0; j < max_char; j++) {
password[i+8] = list[j];
if( ((uint8_t)password[i+4] ^ (uint8_t)password[i+8]) == foo[i]) break;
}
counter++;
} while (( (uint8_t)password[i+4] ^ (uint8_t)password[i+8] ) != foo[i]);
//printf("Counter: %zu\n", counter);
}
password[12] = '\0';
if (hash(password)) {
printf("%s\n", password);
} else {
printf("Fuck\n");
}
}
}
// l96n hRI/ npqM 471M
//
//
// 56 25 36 67
// -----------
// 6C 39 36 6E
// 68 52 49 2F
// 6E 70 71 4D
// -----------
// 3c 3e 38 6b

166
02-Easy2/verificateur.c Normal file
View File

@ -0,0 +1,166 @@
#include <signal.h>
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <string.h>
typedef char char_array[13];
const char psw[][13] = {
"pMuzxQDIgCV9",
"xCQzgmCBpqu2",
"Dum+EEIenoCD",
"MqO4VFBXthjf",
"kiv+IpcxMFrY",
"uTLfrYO4hRdX",
"GBnbBQ8XjL10",
"3dXLhhj74SUq",
"PBfQujB0JwCk",
"vFreTky8MrlW",
"Smw6NADYrsTe",
"5cDL1pbwkLA1",
"i3GK7GP+1+pj",
"cPgNAuWuMzW1",
"TJWgPtgZkaW7",
"SUsZXkg8dash",
"xfs6xhXloQLP",
"dk63xX3Wslbn",
"BiR0yzElTLpV",
"3SAoecG29oaW",
"+Lk+7uiysfeX",
"AfxPOnxqaWg+",
"vWc9cEJYzMNj",
"WxCQAWF1ypbj",
"rFLxXmdCEtO1",
"bPcTXLuhUCq6",
"BfL3NiQzcPzC",
"JFc2N+3Ok27w",
"WQILiwG1Qyiw",
"mssXMUL4OyXf",
"oi7gTr2+TDbF",
"NahPPldbqRk8",
"1XOVgQI19Vam",
"miYOZFsnXpM+",
"ifN7ACCjGzjW",
"iRJKqJejwGH+",
"dCUYAVy5JJKf",
"syOlpOJTlib2",
"uweQVZIpLrK+",
"rR20XegMEh2w",
"lSXVAeNeBiq9",
"eEwKPTvwZNf6",
"0BdTkJWu4WT+",
"HKA0ECJTbWln",
"liyGJbj+ITtf",
"+eP25hETqRrl",
"WtA5SIepkbCO",
"icfFukEtsWD8",
"HcI6RJanuvOR",
"b1y5L8mYAVsf",
"tz4biM6Qrhe9",
"4fg+oqIC4HIb",
"nckMGQuqFmy6",
"dIsiQQAPZGU3",
"dNy8AdudJukV",
"LYnXVcneueg7",
"mtV8FCVEDhgw",
"n13jYX70X6cP",
"xCr0CQfuTMsO",
"nudiMMUTLgV7",
"WrRamXQ8UudS",
"PMo4xkYuGyQK",
"CYxHOhUqcnJ3",
"oCmy07pF0+z5",
"nPOTiwYfhxq8",
"0VlM0kCqobH6",
"Ddh5malRFZcm",
"kRJBRdWxViz0",
"Wa2eMx8YuFm6",
"zOiuAuh+TefT",
"K9P6h3qoLUFS",
"MSBvMhPOodu3",
"zM1OXPd0MB2u",
"gkuyPlX8XXJK",
"HdlZhKJ9OpAi",
"En8xcW8EIfg7",
"eZdPe0Sqo5P+",
"pA+Ihqz5wo6v",
"nvlmrNF3sgMT",
"ZsemPae0eMgW",
"wVgVJa7mRh71",
"GQYaLJG1dDyZ",
"C9lWfSX6J5Sk",
"2lZ40pwtmCJJ",
"KPBXBco4flJf",
"yQF3pzfUftGl",
"8bg+9NfvnsfW",
"+WA8qISy5AuK",
"rjERNfwmSSU5",
"RaQ0otAuRJwO",
"zE49Ln2AYtar",
"CSj5J5ynf9tQ",
"ITzYuBxgSIe4",
"oneuxTg+xeeT",
"CLfsAQ2RmB3+",
"yTq9WfnRAmxa",
"Mqd2iTnAKzmy",
"HmG3eXvTBjVm",
"YIoYAOIxwYA+",
"0Kvr1Yt1nMeI",
};
bool hash(char* str){
char* str1 = str;
char* str2 = str;
uint32_t foo = 0x56253667;
do {
str2 = str1 + 4;
foo = foo ^ ((uint8_t)*str1 << 24 | (uint8_t)str1[1] << 16 | (uint8_t)str1[2] << 8 | (uint8_t)str1[3]);
str1 = str2;
} while (str + 12 != str2);
return foo == 0x397a516d ? true : false;
}
const char list[] = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'/', '+'
};
char give_char(uint8_t index){
if (index >= sizeof(list)) {
printf("Error: Index out of bounds, max %zu\n", sizeof(list));
exit(1);
}
return list[index];
}
int main(int argc, char *argv[]) {
srand(time(NULL));
// seed = 0x56253667;
// answer = 0x3c3e386b;
uint8_t mdw[4] = {0x6F, 0x5F, 0x67, 0x0a};
// #define SOURCE_HASH 0x56 25 36 67
// #define DESTINATION_HASH 0x39 7a 51 6d
char password[13];
const uint8_t max_char = sizeof(list);
for(uint16_t n = 0; n < 100; n++) {
for(uint8_t c = 0; c < 12; c++) {
password[c] = psw[n][c];
}
password[12] = '\0';
if (hash(password)) {
printf("%s\n", password);
} else {
printf("Fuck: %s\n", password);
}
}
}

0
02-Easy3/E3.gpr Normal file
View File

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="a2e40c5a09540945517759134" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="E3" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E3:a2e40c5a09540945517759134
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:E3:a2e40c5a09540945517759134
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="OWNER" TYPE="string" VALUE="remi" />
</BASIC_INFO>
</FILE_INFO>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PROJECT>
<PROJECT_DATA_XML_NAME NAME="DISPLAY_DATA">
<SAVE_STATE>
<ARRAY NAME="EXPANDED_PATHS" TYPE="string">
<A VALUE="E3:" />
</ARRAY>
<STATE NAME="SHOW_TABLE" TYPE="boolean" VALUE="false" />
</SAVE_STATE>
</PROJECT_DATA_XML_NAME>
<TOOL_MANAGER ACTIVE_WORKSPACE="Workspace">
<WORKSPACE NAME="Workspace" ACTIVE="true" />
</TOOL_MANAGER>
</PROJECT>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a82ee89d758705805429400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_a2e40c5a09540945517759134" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,5 @@
VERSION=1
/
00000000:udf_a2e40c5a09540945517759134:c0a82ee89d758705805429400
NEXT-ID:1
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,2 @@
IADD:00000000:/udf_a2e40c5a09540945517759134
IDSET:/udf_a2e40c5a09540945517759134:c0a82ee89d758705805429400

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

View File

@ -0,0 +1,4 @@
VERSION=1
/
NEXT-ID:0
MD5:d41d8cd98f00b204e9800998ecf8427e

110
02-Easy3/E3.txt Normal file
View File

@ -0,0 +1,110 @@
1. What is the target platform of this executable?
ARM64
2. Was this executable stripped?
yes
3. What is the algorithm used to check the validity of a password?
A sum
4. Can you break this password checker, i.e., implementing a generator of valid passwords? You must send 16 different valid passwords by email to pascal+sre25@mod-p.ch before Mar. 10th, 2025, 12h00 CET to validate this lab and get 5 points.
remiPGRz2oEt
remikljzAME/
remiYOxms6U2
remi0eFRgAsu
remimvApt0L9
remisnB2BbvN
remi2KTkcZvN
remi+SUFTsrk
remiRfREU/pz
remilVPBPu5o
remiHRP0Bsww
remi8MhIHsak
remiH9zy7NxL
remigMB24ytt
remiY+9atQeu
remiEtFt+lIj
remi+R2Lniry
remiwUUJOgd8
remiac+ZdwDU
remiSXlJGapD
remiIl7m2xBx
remiEU+jWtUn
remiaxC+vdk1
remiHiSw7Bbg
remilkOGhVOC
remi0gaHUWzW
remi8TwmiD4l
remiNaewP4u9
remiym1yGVJF
remiOgHlqnB2
remitImS5o8d
remi8LoMz9df
remiNOHgblLW
remiAfqSJzFH
remidpDk9COo
remihkNOV8pO
remiAu84iiah
remi5VGexqVG
remiTkZCq9uB
remiuLCxf7KY
remikfKzVV+P
remiXWLR1Xox
remiyZEGxL9a
remiYIylFB5y
remijGqFed9S
remidQBkrcV0
remiuwrG5GIS
remic/C0wrVy
remi2yPCGpag
remiYjgOhdG1
remi/Hi2gVtz
remiX8Ebrrl6
remi/kzJPaAm
remiT1OShoKt
remiiqIX2RtJ
remisDGFQyAn
remiZhbYBFUc
remirboCaPO7
remiXxhCuLR/
remiwZ93maz8
remiQg2N5gxq
remiZ1bg5dwY
remiJrg9kFy7
remiFsWCSSMw
remi5U1vzkBe
remid2eZweX4
remiVLx+JsdW
remi9hEyHu6k
remiByJ9AkzY
remiB27epxnW
remi6VpV8puN
remiPACuhfCc
remicv9OPBXr
remie10Odvlb
remi1x0UemzC
remigEZl+ksB
remiuLbX0bBn
remiPPu2GJmx
remiz5DCyd7s
remi0otpk2NO
remiXA5ZhMms
remix+/QkrUh
remigZaFyW+Z
remiaq+xXLcA
remilSn6AUVn
remigz8tO4Kb
remiblkTOX0Y
remiEeXzs2i3
remiVtkmnA75
remiMN0XipuL
remiiMJE7lfo
remiFQ4cpzq4
remiZJG+Ykzi
remiQTSe6qRg
remi/WcGuyJU
remi77NvCekx
remiHZV2szXN
remiLCRr7tTk
remitgnFQNLC
remiZYpUKKgH

Some files were not shown because too many files have changed in this diff Show More