• Test de connexion internet : Afficher "Connexion réussie" ou "Echec de la connexion" en fonction

    On rentre dans l'exécution des processus parents/enfants encore une fois.
    L'exécution d'une commande permettant de vérifier si on accède à internet doit afficher un résultat, quel que soit le cas de figure (êtes-vous connectés à internet ou non)

    Créez le programme check_internet.asm :

    section .data
    command db '/bin/sh', 0
    arg1 db '-c', 0
    arg2 db 'fetch -q -o /dev/null https://www.freebsd.org 2>/dev/null', 0
    argv dq command, arg1, arg2, 0
    envp dq 0

    success_msg db 'Connexion réussie', 10, 0
    success_msg_len equ $ - success_msg

    failure_msg db 'Échec de la connexion', 10, 0
    failure_msg_len equ $ - failure_msg

    section .bss
    wstatus resq 1

    section .text
    global _start

    _start:
    mov rax, 2 ; sys_fork
    syscall

    test rax, rax
    jz child_process

    ; Processus parent
    mov rdi, rax ; PID de l'enfant
    mov rsi, wstatus ; Pointeur vers le statut
    xor rdx, rdx ; Options
    mov rax, 7 ; sys_wait4
    syscall

    ; Vérifier le code de retour
    mov rax, [wstatus]
    and rax, 0xFF00
    shr rax, 8

    test rax, rax
    jnz connection_failure

    ; Afficher le message de succès
    mov rax, 4 ; sys_write
    mov rdi, 1 ; stdout
    mov rsi, success_msg
    mov rdx, success_msg_len
    syscall
    jmp exit_program

    connection_failure:
    ; Afficher le message d'échec
    mov rax, 4 ; sys_write
    mov rdi, 1 ; stdout
    mov rsi, failure_msg
    mov rdx, failure_msg_len
    syscall

    exit_program:
    mov rax, 1 ; sys_exit
    xor rdi, rdi ; Code de sortie 0
    syscall

    child_process:
    mov rax, 59 ; sys_execve
    mov rdi, command
    mov rsi, argv
    mov rdx, envp
    syscall

    ; Si execve échoue, sortir avec un code d'erreur
    mov rax, 1 ; sys_exit
    mov rdi, 1 ; Code de sortie 1 (erreur)
    syscall

    - Assembler

    nasm -f elf64 check_internet.asm -o check_internet.o

    - Linker

    ld check_internet.o -o check_internet

    - Lancer le programme 

    ./check_internet

     


    Tags Tags : , , , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :