Outils pour utilisateurs

Outils du site


bloc_note

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc_note [2024/12/17 13:10] adminbloc_note [2025/03/24 15:27] (Version actuelle) admin
Ligne 2: Ligne 2:
  
 <code> <code>
-#include <stdio.h> +        <g id="SANDOUVILLE" transform="matrix(2.91786,0,0,2.64787,-910.867,-504.816)"
-#include <stdlib.h> + <ellipse cx="475.825cy="305.328rx="0.902ry="0.994style="fill:rgb(216,29,29);"/> 
-#include <string.h+ <g transform="matrix(0.0639002,0,0,0.0708526,474.795,304.48)"> 
-#include <unistd.h> + <g> 
- + <path id="Rectangle-24serif:id="Rectangle-2d="M24,11L26,11L26,13.686L13.686,26L2,13.686L13.686,2L26,2L26,8L24,8L23,5L14.929,5L6.188,13.741L13.742,21.701L23,12.444L24,11Zstyle="fill:rgb(26,26,26);"/> 
-#define MAX_SCRIPTS 100 + <path id="D4serif:id="Dd="M13.342,17.085C12.996,17.085 12.623,17.074 12.225,17.052C11.827,17.031 11.461,17 11.128,16.96L11.128,9.795C11.504,9.708 11.925,9.64 12.39,9.59C12.855,9.54 13.307,9.515 13.748,9.515C15.191,9.515 16.272,9.823 16.993,10.44C17.713,11.057 18.073,12.01 18.073,13.3C18.073,14.187 17.9,14.908 17.555,15.465C17.21,16.022 16.691,16.431 15.998,16.693C15.304,16.954 14.419,17.085 13.342,17.085ZM13.938,15.34C14.378,15.34 14.737,15.273 15.015,15.14C15.293,15.007 15.502,14.791 15.64,14.493C15.778,14.194 15.848,13.793 15.848,13.29C15.848,12.793 15.775,12.396 15.63,12.098C15.485,11.799 15.272,11.583 14.99,11.45C14.708,11.317 14.353,11.25 13.923,11.25C13.832,11.25 13.728,11.256 13.608,11.268C13.487,11.279 13.386,11.293 13.303,11.31L13.303,15.325C13.456,15.335 13.667,15.34 13.938,15.34Zstyle="fill:rgb(50,50,50);"/> 
-#define MAX_SCRIPT_LENGTH 256 + </g> 
- + </g> 
-// Chemin fixe vers le fichier des scripts valides + </g>
-#define VALID_SCRIPTS_FILE "/path/to/valid_scripts.txt" +
- +
-// Liste des scripts valides par défaut +
-const char *default_scripts[] {"toto.sh""titi.sh""tata.sh"}; +
-const size_t default_scripts_count sizeof(default_scripts) / sizeof(default_scripts[0]); +
- +
-// Liste externe pour stocker les scripts supplémentaires +
-char external_scripts[MAX_SCRIPTS][MAX_SCRIPT_LENGTH]; +
-size_t external_scripts_count 0; +
- +
-// Fonction pour vérifier que le programme est lancé par un script shell +
-void check_parent_process() { +
-    char path[256]; +
-    char parent_executable[256] = {0}; +
-    FILE *file; +
- +
-    // Obtenir le PPID (Parent Process ID+
-    pid_t ppid = getppid(); +
- +
-    // Lire le nom du processus parent dans /proc/[PPID]/comm +
-    snprintf(path, sizeof(path), "/proc/%d/comm", ppid); +
-    file fopen(path, "r"); +
-    if (!file) { +
-        perror("Error: Unable to check parent process"); +
-        exit(1); +
-    } +
- +
-    if (fgets(parent_executablesizeof(parent_executable)file)) { +
-        // Supprimer le saut de ligne +
-        parent_executable[strcspn(parent_executable"\n")] = 0; +
-    } +
-    fclose(file); +
- +
-    // Vérifier si le processus parent est un shell (bashshetc.+
-    if (strcmp(parent_executable"bash") != 0 && strcmp(parent_executable, "sh") !0) { +
-        fprintf(stderr, "ErrorThis program must be launched by a shell script (bash or sh).\n"); +
-        exit(1); +
-    } +
-+
- +
-// Fonction pour charger les scripts valides depuis un fichier +
-int load_external_scripts() { +
-    FILE *file fopen(VALID_SCRIPTS_FILE, "r"); +
-    if (!file) { +
-        perror("Error opening the valid scripts file"); +
-        return 1; +
-    } +
- +
-    char line[MAX_SCRIPT_LENGTH]; +
-    while (fgets(linesizeof(line)file)) { +
-        line[strcspn(line"\n")] = 0; // Supprimer le saut de ligne +
- +
-        if (external_scripts_count >= MAX_SCRIPTS) { +
-            fprintf(stderr"Error: Too many scripts in the external list.\n"); +
-            fclose(file); +
-            return 1; +
-        } +
- +
-        strncpy(external_scripts[external_scripts_count]lineMAX_SCRIPT_LENGTH - 1); +
-        external_scripts[external_scripts_count][MAX_SCRIPT_LENGTH - 1] = '\0'; +
-        external_scripts_count++; +
-    } +
- +
-    fclose(file); +
-    return 0; +
-+
- +
-// Fonction pour vérifier si le script est valide +
-int is_valid_script(const char *script) { +
-    for (size_t i = 0; i < default_scripts_count; i++) { +
-        if (strcmp(scriptdefault_scripts[i]) == 0) { +
-            return 1; +
-        } +
-    } +
-    for (size_t i = 0; i < external_scripts_count; i++) { +
-        if (strcmp(scriptexternal_scripts[i]) == 0) { +
-            return 1; +
-        } +
-    } +
-    return 0; +
-+
- +
-// Fonction pour décoder en base64 +
-void decode_base64(const char *input) { +
-    char command[512]; +
-    snprintf(commandsizeof(command)"echo %s | base64 -d"input); +
-    system(command); +
-+
- +
-int main(int argcchar *argv[]) { +
-    // Vérifier si le programme est lancé par un script shell +
-    check_parent_process(); +
- +
-    // Charger la liste externe des scripts valides +
-    if (load_external_scripts() != 0) { +
-        return 1; +
-    } +
- +
-    // Vérifier que la variable d'environnement SCRIPT est définie +
-    const char *script = getenv("SCRIPT"); +
-    if (script == NULL) { +
-        fprintf(stderr, "ErrorEnvironment variable SCRIPT is not set.\n"); +
-        return 1; +
-    } +
- +
-    // Vérifier si le script est valide +
-    if (!is_valid_script(script)) { +
-        fprintf(stderr"Error: Script '%s' is not allowed.\n"script); +
-        return 1; +
-    } +
- +
-    // Vérifier qu'un argument pour le décodage a été fourni +
-    if (argc 2) { +
-        fprintf(stderr, "Missing argument for base64 decoding.\n"); +
-        return 1; +
-    } +
- +
-    // Décoder l'argument en base64 +
-    decode_base64(argv[1]); +
-    printf("\n"); +
- +
-    return 0; +
-+
  
 </code> </code>
bloc_note.1734437431.txt.gz · Dernière modification : 2024/12/17 13:10 de admin