From e6c3264ad34aa46edca8610cc8fcf4c2173f687a Mon Sep 17 00:00:00 2001
From: Paco BONILLA <pbonilla@f2r5s6.clusters.42paris.fr>
Date: Thu, 22 May 2025 14:03:58 +0200
Subject: [PATCH] chore: decompiled source files

---
 bonus0/Ressources/bonus0.c |  50 ++++++++++++++++
 bonus1/Ressources/bonus1.c |  20 +++++++
 bonus2/Ressources/bonus2.c |  49 ++++++++++++++++
 bonus3/Ressources/bonus3.c |  40 +++++++++++++
 level1/Ressources/level1.c |  14 +++++
 level2/Ressources/level2.c |  25 ++++++++
 level3/Ressources/level3.c |  22 +++++++
 level4/Ressources/level4.c |  26 +++++++++
 level5/Ressources/level5.c |  28 +++++++++
 level6/Ressources/level6.c |  28 +++++++++
 level7/Ressources/level7.c |  35 +++++++++++
 level8/Ressources/level8.c | 116 +++++++++++++++++++++++++++++++++++++
 level9/Ressources/level9.c |  30 ++++++++++
 13 files changed, 483 insertions(+)
 create mode 100644 bonus0/Ressources/bonus0.c
 create mode 100644 bonus1/Ressources/bonus1.c
 create mode 100644 bonus2/Ressources/bonus2.c
 create mode 100644 bonus3/Ressources/bonus3.c
 create mode 100644 level1/Ressources/level1.c
 create mode 100644 level2/Ressources/level2.c
 create mode 100644 level3/Ressources/level3.c
 create mode 100644 level4/Ressources/level4.c
 create mode 100644 level5/Ressources/level5.c
 create mode 100644 level6/Ressources/level6.c
 create mode 100644 level7/Ressources/level7.c
 create mode 100644 level8/Ressources/level8.c
 create mode 100644 level9/Ressources/level9.c

diff --git a/bonus0/Ressources/bonus0.c b/bonus0/Ressources/bonus0.c
new file mode 100644
index 0000000..5ccdc50
--- /dev/null
+++ b/bonus0/Ressources/bonus0.c
@@ -0,0 +1,50 @@
+
+undefined4 main(void)
+
+{
+  char local_3a [54];
+  
+  pp(local_3a);
+  puts(local_3a);
+  return 0;
+}
+
+void pp(char *param_1)
+
+{
+  char cVar1;
+  uint uVar2;
+  char *pcVar3;
+  byte bVar4;
+  char local_34 [20];
+  char local_20 [20];
+  
+  bVar4 = 0;
+  p(local_34,&DAT_080486a0);
+  p(local_20,&DAT_080486a0);
+  strcpy(param_1,local_34);
+  uVar2 = 0xffffffff;
+  pcVar3 = param_1;
+  do {
+    if (uVar2 == 0) break;
+    uVar2 = uVar2 - 1;
+    cVar1 = *pcVar3;
+    pcVar3 = pcVar3 + (uint)bVar4 * -2 + 1;
+  } while (cVar1 != '\0');
+  *(undefined2 *)(param_1 + (~uVar2 - 1)) = 0x20;
+  strcat(param_1,local_20);
+  return;
+}
+
+void p(char *param_1,char *param_2)
+{
+  char *pcVar1;
+  char local_100c [4104];
+  
+  puts(param_2);
+  read(0,local_100c,0x1000);
+  pcVar1 = strchr(local_100c,10);
+  *pcVar1 = '\0';
+  strncpy(param_1,local_100c,0x14);
+  return;
+}
diff --git a/bonus1/Ressources/bonus1.c b/bonus1/Ressources/bonus1.c
new file mode 100644
index 0000000..9e8d41a
--- /dev/null
+++ b/bonus1/Ressources/bonus1.c
@@ -0,0 +1,20 @@
+undefined4 main(undefined4 param_1,int param_2)
+
+{
+  undefined4 uVar1;
+  undefined local_3c [40];
+  int local_14;
+  
+  local_14 = atoi(*(char **)(param_2 + 4));
+  if (local_14 < 10) {
+    memcpy(local_3c,*(void **)(param_2 + 8),local_14 * 4);
+    if (local_14 == 0x574f4c46) {
+      execl("/bin/sh","sh",0);
+    }
+    uVar1 = 0;
+  }
+  else {
+    uVar1 = 1;
+  }
+  return uVar1;
+}
diff --git a/bonus2/Ressources/bonus2.c b/bonus2/Ressources/bonus2.c
new file mode 100644
index 0000000..3fa1447
--- /dev/null
+++ b/bonus2/Ressources/bonus2.c
@@ -0,0 +1,49 @@
+
+undefined4 main(int param_1,int param_2)
+
+{
+  undefined4 uVar1;
+  int iVar2;
+  undefined4 *puVar3;
+  undefined4 *puVar4;
+  byte bVar5;
+  undefined4 local_60 [10];
+  char acStack_38 [36];
+  char *local_14;
+  
+  bVar5 = 0;
+  if (param_1 == 3) {
+    puVar3 = local_60;
+    for (iVar2 = 0x13; iVar2 != 0; iVar2 = iVar2 + -1) {
+      *puVar3 = 0;
+      puVar3 = puVar3 + 1;
+    }
+    strncpy((char *)local_60,*(char **)(param_2 + 4),0x28);
+    strncpy(acStack_38,*(char **)(param_2 + 8),0x20);
+    local_14 = getenv("LANG");
+    if (local_14 != (char *)0x0) {
+      iVar2 = memcmp(local_14,&DAT_0804873d,2);
+      if (iVar2 == 0) {
+        language = 1;
+      }
+      else {
+        iVar2 = memcmp(local_14,&DAT_08048740,2);
+        if (iVar2 == 0) {
+          language = 2;
+        }
+      }
+    }
+    puVar3 = local_60;
+    puVar4 = (undefined4 *)&stack0xffffff50;
+    for (iVar2 = 0x13; iVar2 != 0; iVar2 = iVar2 + -1) {
+      *puVar4 = *puVar3;
+      puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
+      puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
+    }
+    uVar1 = greetuser();
+  }
+  else {
+    uVar1 = 1;
+  }
+  return uVar1;
+}
diff --git a/bonus3/Ressources/bonus3.c b/bonus3/Ressources/bonus3.c
new file mode 100644
index 0000000..853494d
--- /dev/null
+++ b/bonus3/Ressources/bonus3.c
@@ -0,0 +1,40 @@
+undefined4 main(int param_1,int param_2)
+
+{
+  undefined4 uVar1;
+  int iVar2;
+  undefined4 *puVar3;
+  byte bVar4;
+  undefined4 local_98 [16];
+  undefined local_57;
+  char local_56 [66];
+  FILE *local_14;
+  
+  bVar4 = 0;
+  local_14 = fopen("/home/user/end/.pass","r");
+  puVar3 = local_98;
+  for (iVar2 = 0x21; iVar2 != 0; iVar2 = iVar2 + -1) {
+    *puVar3 = 0;
+    puVar3 = puVar3 + (uint)bVar4 * -2 + 1;
+  }
+  if ((local_14 == (FILE *)0x0) || (param_1 != 2)) {
+    uVar1 = 0xffffffff;
+  }
+  else {
+    fread(local_98,1,0x42,local_14);
+    local_57 = 0;
+    iVar2 = atoi(*(char **)(param_2 + 4));
+    *(undefined *)((int)local_98 + iVar2) = 0;
+    fread(local_56,1,0x41,local_14);
+    fclose(local_14);
+    iVar2 = strcmp((char *)local_98,*(char **)(param_2 + 4));
+    if (iVar2 == 0) {
+      execl("/bin/sh","sh",0);
+    }
+    else {
+      puts(local_56);
+    }
+    uVar1 = 0;
+  }
+  return uVar1;
+}
diff --git a/level1/Ressources/level1.c b/level1/Ressources/level1.c
new file mode 100644
index 0000000..a3354cc
--- /dev/null
+++ b/level1/Ressources/level1.c
@@ -0,0 +1,14 @@
+void main(void)
+{
+  char local_50 [76];
+  
+  gets(local_50);
+  return;
+}
+
+void run(void)
+{
+  fwrite("Good... Wait what?\n",1,0x13,stdout);
+  system("/bin/sh");
+  return;
+}
diff --git a/level2/Ressources/level2.c b/level2/Ressources/level2.c
new file mode 100644
index 0000000..5f1ddcb
--- /dev/null
+++ b/level2/Ressources/level2.c
@@ -0,0 +1,25 @@
+
+void main(void)
+{
+  p();
+  return;
+}
+
+
+void p(void)
+
+{
+  uint unaff_retaddr;
+  char local_50 [76];
+
+  fflush(stdout);
+  gets(local_50);
+  if ((unaff_retaddr & 0xb0000000) == 0xb0000000) {
+    printf("(%p)\n",unaff_retaddr);
+                    /* WARNING: Subroutine does not return */
+    _exit(1);
+  }
+  puts(local_50);
+  strdup(local_50);
+  return;
+}
diff --git a/level3/Ressources/level3.c b/level3/Ressources/level3.c
new file mode 100644
index 0000000..cd4bb73
--- /dev/null
+++ b/level3/Ressources/level3.c
@@ -0,0 +1,22 @@
+
+void main(void)
+
+{
+  v();
+  return;
+}
+
+
+void v(void)
+
+{
+  char local_20c [520];
+
+  fgets(local_20c,0x200,stdin);
+  printf(local_20c);
+  if (m == 0x40) {
+    fwrite("Wait what?!\n",1,0xc,stdout);
+    system("/bin/sh");
+  }
+  return;
+}
diff --git a/level4/Ressources/level4.c b/level4/Ressources/level4.c
new file mode 100644
index 0000000..676b5d5
--- /dev/null
+++ b/level4/Ressources/level4.c
@@ -0,0 +1,26 @@
+
+void main(void)
+{
+  n();
+  return;
+}
+
+void n(void)
+{
+  char local_20c [520];
+  
+  fgets(local_20c,0x200,stdin);
+  p(local_20c);
+  if (m == 0x1025544) {
+    system("/bin/cat /home/user/level5/.pass");
+  }
+  return;
+}
+
+
+void p(char *param_1)
+{
+  printf(param_1);
+  return;
+}
+	
diff --git a/level5/Ressources/level5.c b/level5/Ressources/level5.c
new file mode 100644
index 0000000..f9706f1
--- /dev/null
+++ b/level5/Ressources/level5.c
@@ -0,0 +1,28 @@
+
+void main(void)
+
+{
+  n();
+  return;
+}
+
+void n(void)
+
+{
+  char local_20c [520];
+  
+  fgets(local_20c,0x200,stdin);
+  printf(local_20c);
+                    /* WARNING: Subroutine does not return */
+  exit(1);
+}
+
+
+void o(void)
+
+{
+  system("/bin/sh");
+                    /* WARNING: Subroutine does not return */
+  _exit(1);
+}
+
diff --git a/level6/Ressources/level6.c b/level6/Ressources/level6.c
new file mode 100644
index 0000000..e62c993
--- /dev/null
+++ b/level6/Ressources/level6.c
@@ -0,0 +1,28 @@
+
+void main(undefined4 param_1,int param_2)
+
+{
+  char *__dest;
+  code **ppcVar1;
+  
+  __dest = (char *)malloc(0x40);
+  ppcVar1 = (code **)malloc(4);
+  *ppcVar1 = m;
+  strcpy(__dest,*(char **)(param_2 + 4));
+  (**ppcVar1)();
+  return;
+}
+
+void m(void *param_1,int param_2,char *param_3,int param_4,int param_5)
+
+{
+  puts("Nope");
+  return;
+}
+
+void n(void)
+
+{
+  system("/bin/cat /home/user/level7/.pass");
+  return;
+}
diff --git a/level7/Ressources/level7.c b/level7/Ressources/level7.c
new file mode 100644
index 0000000..ce0c4ac
--- /dev/null
+++ b/level7/Ressources/level7.c
@@ -0,0 +1,35 @@
+
+undefined4 main(undefined4 param_1,int param_2)
+
+{
+  undefined4 *puVar1;
+  void *pvVar2;
+  undefined4 *puVar3;
+  FILE *__stream;
+  
+  puVar1 = (undefined4 *)malloc(8);
+  *puVar1 = 1;
+  pvVar2 = malloc(8);
+  puVar1[1] = pvVar2;
+  puVar3 = (undefined4 *)malloc(8);
+  *puVar3 = 2;
+  pvVar2 = malloc(8);
+  puVar3[1] = pvVar2;
+  strcpy((char *)puVar1[1],*(char **)(param_2 + 4));
+  strcpy((char *)puVar3[1],*(char **)(param_2 + 8));
+  __stream = fopen("/home/user/level8/.pass","r");
+  fgets(c,0x44,__stream);
+  puts("~~");
+  return 0;
+}
+
+void m(void *param_1,int param_2,char *param_3,int param_4,int param_5)
+
+{
+  time_t tVar1;
+
+  tVar1 = time((time_t *)0x0);
+  printf("%s - %d\n",c,tVar1);
+  return;
+}
+
diff --git a/level8/Ressources/level8.c b/level8/Ressources/level8.c
new file mode 100644
index 0000000..94ef904
--- /dev/null
+++ b/level8/Ressources/level8.c
@@ -0,0 +1,116 @@
+
+undefined4 main(void)
+
+{
+  char cVar1;
+  char *pcVar2;
+  int iVar3;
+  uint uVar4;
+  byte *pbVar5;
+  byte *pbVar6;
+  bool bVar7;
+  undefined uVar8;
+  undefined uVar9;
+  bool bVar10;
+  undefined uVar11;
+  byte bVar12;
+  byte local_90 [5];
+  char local_8b [2];
+  char acStack_89 [125];
+  
+  bVar12 = 0;
+  do {
+    printf("%p, %p \n",auth,service);
+    pcVar2 = fgets((char *)local_90,0x80,stdin);
+    bVar7 = false;
+    bVar10 = pcVar2 == (char *)0x0;
+    if (bVar10) {
+      return 0;
+    }
+    iVar3 = 5;
+    pbVar5 = local_90;
+    pbVar6 = (byte *)"auth ";
+    do {
+      if (iVar3 == 0) break;
+      iVar3 = iVar3 + -1;
+      bVar7 = *pbVar5 < *pbVar6;
+      bVar10 = *pbVar5 == *pbVar6;
+      pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
+      pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
+    } while (bVar10);
+    uVar8 = 0;
+    uVar11 = (!bVar7 && !bVar10) == bVar7;
+    if ((bool)uVar11) {
+      auth = (undefined4 *)malloc(4);
+      *auth = 0;
+      uVar4 = 0xffffffff;
+      pcVar2 = local_8b;
+      do {
+        if (uVar4 == 0) break;
+        uVar4 = uVar4 - 1;
+        cVar1 = *pcVar2;
+        pcVar2 = pcVar2 + (uint)bVar12 * -2 + 1;
+      } while (cVar1 != '\0');
+      uVar4 = ~uVar4 - 1;
+      uVar8 = uVar4 < 0x1e;
+      uVar11 = uVar4 == 0x1e;
+      if (uVar4 < 0x1f) {
+        strcpy((char *)auth,local_8b);
+      }
+    }
+    iVar3 = 5;
+    pbVar5 = local_90;
+    pbVar6 = (byte *)"reset";
+    do {
+      if (iVar3 == 0) break;
+      iVar3 = iVar3 + -1;
+      uVar8 = *pbVar5 < *pbVar6;
+      uVar11 = *pbVar5 == *pbVar6;
+      pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
+      pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
+    } while ((bool)uVar11);
+    uVar9 = 0;
+    uVar8 = (!(bool)uVar8 && !(bool)uVar11) == (bool)uVar8;
+    if ((bool)uVar8) {
+      free(auth);
+    }
+    iVar3 = 6;
+    pbVar5 = local_90;
+    pbVar6 = (byte *)"service";
+    do {
+      if (iVar3 == 0) break;
+      iVar3 = iVar3 + -1;
+      uVar9 = *pbVar5 < *pbVar6;
+      uVar8 = *pbVar5 == *pbVar6;
+      pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
+      pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
+    } while ((bool)uVar8);
+    uVar11 = 0;
+    uVar8 = (!(bool)uVar9 && !(bool)uVar8) == (bool)uVar9;
+    if ((bool)uVar8) {
+      uVar11 = (byte *)0xfffffff8 < local_90;
+      uVar8 = acStack_89 == (char *)0x0;
+      service = strdup(acStack_89);
+    }
+    iVar3 = 5;
+    pbVar5 = local_90;
+    pbVar6 = (byte *)"login";
+    do {
+      if (iVar3 == 0) break;
+      iVar3 = iVar3 + -1;
+      uVar11 = *pbVar5 < *pbVar6;
+      uVar8 = *pbVar5 == *pbVar6;
+      pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
+      pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
+    } while ((bool)uVar8);
+    if ((!(bool)uVar11 && !(bool)uVar8) == (bool)uVar11) {
+      if (auth[8] == 0) {
+        fwrite("Password:\n",1,10,stdout);
+      }
+      else {
+        system("/bin/sh");
+      }
+    }
+  } while( true );
+}
+
diff --git a/level9/Ressources/level9.c b/level9/Ressources/level9.c
new file mode 100644
index 0000000..fb21d99
--- /dev/null
+++ b/level9/Ressources/level9.c
@@ -0,0 +1,30 @@
+
+void main(int param_1,int param_2)
+
+{
+  N *this;
+  undefined4 *this_00;
+  
+  if (param_1 < 2) {
+                    /* WARNING: Subroutine does not return */
+    _exit(1);
+  }
+  this = (N *)operator.new(0x6c);
+  N::N(this,5);
+  this_00 = (undefined4 *)operator.new(0x6c);
+  N::N((N *)this_00,6);
+  N::setAnnotation(this,*(char **)(param_2 + 4));
+  (**(code **)*this_00)(this_00,this);
+  return;
+}
+
+void __thiscall N::setAnnotation(N *this,char *param_1)
+
+{
+  size_t __n;
+  
+  __n = strlen(param_1);
+  memcpy(this + 4,param_1,__n);
+  return;
+}
+