Forum Linux.débutant Commande watch

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
7
jan.
2022

Bonjour à tous!

Je bloque sur une question d'un exercice depuis plusieurs jours… Est-ce que l'un d'entre vous pourrait svp me mettre sur la voie?

Run the binary located at /home/cactus/watchman.
This binary generates output that changes frequently.
This content includes the flag, which will disappear from view too quickly for you to grab it.
Use the watch command to get the flag.

Lorsque je lance simplement le binaire j'ai un message qui me dit que j'ai échoué bien sur.
Je pense que je dois utiliser watch avec qqch et ./watchman mais comme je ne "visualise" pas comment ce binaire peut générer une sortie qui change fréquemment (puisque lorsque je le lance simplement j'ai seulement un message d'échec…) je ne vois pas quelle commande je dois lui appliquer :(

Pourriez-vous svp me donner quelques pistes de réflexion?

D'avance, merci.

  • # man watch

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    https://linux.die.net/man/1/watch

    La gelée de coings est une chose à ne pas avaler de travers.

  • # Prémisse fausse ?

    Posté par  (site web personnel) . Évalué à 2.

    Lorsque je lance simplement le binaire j'ai un message qui me dit que j'ai échoué bien sur.

    De ce que je comprend de ton ennoncé, tu ne devrais pas avoir d’erreur en lançant le binaire. Peux-tu copier la sortie de ton terminal quand tu lances la commandes ?

    • [^] # Re: Prémisse fausse ?

      Posté par  . Évalué à 2.

      Voici la sortie lorsque je lance le binaire:

      Nothing is happening. The world is the same as it was before and the future is looking a little bit darker every day. Please! Don't leave. Somebody has to do it, don't you see? Somebody has to save the world. Please continue to keep watch.

      Je me suis mal exprimée, il ne s'agit pas d'un message d'erreur du système, juste un message du binaire pour me signifier que mon action est incorrecte.
      Mais ce qui me chiffonne c'est que je pensais qu'en lançant le binaire j'allais avoir une sortie qui s'affiche et s'efface instantanément et que je devais donc trouver une commande pour ralentir le cycle de mise à jour… Je ne sais pas si je suis très claire dans mes explications… désolée.

      • [^] # Re: Prémisse fausse ?

        Posté par  (site web personnel) . Évalué à 4.

        Quelque chose comme :

        $ watch -d -n 0.1 ./watchman
        

        ?

        • [^] # Re: Prémisse fausse ?

          Posté par  (site web personnel) . Évalué à 3.

          Si c’est pour un exercice, on ne va pas donner la réponse (bien que SoooLooo ait compris le principe) :)

          Par contre, je pense qu’il y a un soucis car là, l’ennoncé n’a pas de sens… Hypothèse, le programme affiche le texte puis l’efface très vite, sauf que pour une raison ou une autre, la commande d’effacement n’est pas interprétée par le terminal -> tester avec un autre terminal ?

          • [^] # Re: Prémisse fausse ?

            Posté par  . Évalué à 1.

            Oui j’ai essayé dans 2 terminaux différents.

            j’ai regardé également dans le binaire, et il y a beaucoup d’autres « réponses » du binaire possible. Donc, il doit y avoir un switch particulier à ajouter ou une commande pour faire réagir le binaire mais je ne vois pas :(
            Merci d’avoir pris le temps de me répondre en tous cas…
            Je devrais peut-être passer ça dans gdb?! Mais ce n’est pas l’objectif de l’exercice…

        • [^] # Re: Prémisse fausse ?

          Posté par  . Évalué à 1.

          J’ai bien sûr déjà essayé ces commandes mais rien ne se passe…

    • [^] # Re: Prémisse fausse ?

      Posté par  . Évalué à 1. Dernière modification le 07 janvier 2022 à 20:19.

      Peux-tu copier la sortie de ton terminal quand tu lances la commandes ?

      Je donne 4 piste pour ceci :

      • la commande script ;
      • avec une redirection shell ;
      • la commande strace ;
      • un pipe dans tail -f.
      • [^] # Re: Prémisse fausse ?

        Posté par  . Évalué à 1.

        Si je lance la commande:
        watch -d -n 30 ./watchman

        Voici la sortie de mon terminal:

        Every 30.0s: ./watchman linux04: Fri Jan 7 20:32:31 2022

        Nothing is happening. The world is the same as it was before and the future is looking a little bit darker every day.
        Please! Don't leave. Somebody has to do it, don't you see? Somebody has to save the world.
        Please continue to keep watch.

        J'ai attendu quelques minutes, je me suis dit que peut-être le message changerait… mais rien non plus!

        Je vais regarder ce que je peux faire avec tes propositions :) merci!

  • # Flag ?

    Posté par  . Évalué à 1.

    L’énoncé est presque clair :
    - la sortie de watchman n'est pas toujours la même
    - parfois, il y a un flag dans cette sortie. Un truc qui pourrait se chopper avec grep par exemple.

    Mais c’est quoi un flag ?

    • [^] # Re: Flag ?

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      Mais c’est quoi un flag ?

      Bonne question. Un coup de ./watchman --help pour commencer ?

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: Flag ?

        Posté par  . Évalué à 1.

        ./watchman --help

        ==> Usage: ./watchman [no arguments needed for this binary]

    • [^] # Re: Flag ?

      Posté par  . Évalué à 1.

      Ta question c’est bien “qu est ce qu un flag dans Mon exercice?” Si oui, c’est comme dans les CTF: le drapeau caché qu il faut découvrir

      • [^] # Re: Flag ?

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        Dans ce cas, continue to keep watch comme il est dit

        watch -d -n 0.1 ./watchman

        “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: Flag ?

        Posté par  . Évalué à 3.

        Finalement j'ai trouvé! Enfin à moitié. Je m'explique:

        J'ai refait un watch -d -n 1 ./watchman

        J'ai attendu et au bout d'une minute le message s'est mis en surveillance et a changé le temps d'une seconde. (Ce qui explique que je ne l'avais pas vu la fois précédente.
        J'ai triché en faisant un screenshot au bon moment pour voir le nouveau message et trouver le flag.
        Il ne me reste plus qu'à trouver la solution pour laisser le nouveau message à l'écran.

        • [^] # Re: Flag ?

          Posté par  . Évalué à 1.

          *surbrillance et non surveillance

        • [^] # Re: Flag ?

          Posté par  . Évalué à 2.

          Sinon, j'avais pas pensé : tu as la commande strings qui permet d'extraire les chaînes de caractère du binaire. Maintenant que tu connais le mot qui change grâce à ton screenshot, vois si tu arrives à le retrouver avec strings et grep ;).

          • [^] # Re: Flag ?

            Posté par  . Évalué à 1.

            je vais regarder ça et je reviens vers toi, merci :)

        • [^] # Re: Flag ?

          Posté par  . Évalué à 2.

          je ne connaissais pas l'option -d

          moi je fais toujours

          watch -n delay 'commande'

          delay en seconde
          commande pouvant etre une commande seule 'watchman' dans ton cas
          ou un enchainement de commande avec des pipes par exemple 'xxx | yyyy | zzz'

          tres pratique pour surveiller la sortie de dmesg par exemple, en sortant les 10 dernières lignes toutes les 5 secondes

          watch -n5 'dmesg | tail'
        • [^] # Re: Flag ?

          Posté par  (site web personnel) . Évalué à 2.

          Peut-être utiliser -d=permanent ?

          -d, --differences[=permanent]
                        Highlight the differences between successive updates. If the optional permanent argument is specified then watch will show all changes since the
                        first iteration.
          
                 -n, --interval seconds
                        Specify  update  interval.  The command will not allow quicker than 0.1 second interval, in which the smaller values are converted. Both '.' and
                        ',' work for any locales. The WATCH_INTERVAL environment can be used to persistently set a non-default interval (following the  same  rules  and
                        formatting).
          

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.