bloc_note
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
bloc_note [2024/12/18 07:29] – admin | bloc_note [2025/03/24 15:27] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
< | < | ||
- | # | + | <g id=" |
- | #include <stdlib.h> | + | <ellipse cx=" |
- | #include <string.h> | + | < |
- | #include <unistd.h> | + | < |
- | # | + | < |
- | + | < | |
- | // Liste des scripts autorisés | + | </ |
- | const char *authorized_scripts[] | + | </g> |
- | | + | < |
- | | + | |
- | NULL // Marqueur de fin de liste | + | |
- | }; | + | |
- | + | ||
- | // Fonction pour vérifier si un script est autorisé | + | |
- | int is_script_authorized(const char *script_path) { | + | |
- | for (int i = 0; authorized_scripts[i] != NULL; i++) { | + | |
- | if (strcmp(script_path, authorized_scripts[i]) == 0) { | + | |
- | return 1; // Trouvé dans la liste | + | |
- | } | + | |
- | } | + | |
- | return 0; // Non autorisé | + | |
- | } | + | |
- | + | ||
- | void check_parent_script() { | + | |
- | pid_t ppid = getppid(); // Obtenir le PPID (Parent Process ID) | + | |
- | char path[256]; | + | |
- | char cmdline[1024] = {0}; | + | |
- | FILE *file; | + | |
- | + | ||
- | // Construire le chemin vers / | + | |
- | snprintf(path, sizeof(path), "/ | + | |
- | + | ||
- | // Ouvrir le fichier cmdline pour lire la commande du parent | + | |
- | file = fopen(path, | + | |
- | if (!file) { | + | |
- | perror(" | + | |
- | exit(1); | + | |
- | } | + | |
- | + | ||
- | // Lire le contenu de cmdline | + | |
- | if (fgets(cmdline, sizeof(cmdline), file) != NULL) { | + | |
- | fclose(file); | + | |
- | + | ||
- | | + | |
- | char *script_path | + | |
- | if (*script_path != ' | + | |
- | // Valider le script | + | |
- | if (!is_script_authorized(script_path)) { | + | |
- | fprintf(stderr, | + | |
- | exit(1); | + | |
- | } | + | |
- | } else { | + | |
- | fprintf(stderr, " | + | |
- | exit(1); | + | |
- | } | + | |
- | } else { | + | |
- | fclose(file); | + | |
- | perror("Error: Unable to read parent process command line." | + | |
- | exit(1); | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | int main(int argc, char *argv[]) { | + | |
- | // Vérifier le script parent | + | |
- | check_parent_script(); | + | |
- | + | ||
- | printf("Program successfully launched by an authorized script.\n" | + | |
- | + | ||
- | // Logique principale du programme ici | + | |
- | return 0; | + | |
- | } | + | |
</ | </ |
bloc_note.1734503349.txt.gz · Dernière modification : 2024/12/18 07:29 de admin