Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment lire des données ligne par ligne.

Sujet résolu
    1 octobre 2017 à 16:43:59

    Bonjour,

    Je souhaiterais analyser les packets sortant de mon PC via tcpdump.

    Voici la commande qui à pour but de récuperé l'ip Cible (c'était l'exemple le plus facile) :

    sudo tcpdump | grep "192.168.1.200" | cut -d">" -f1 | grep "IP" | cut -d" " -f3 | cut -d"." -f1-4

    Dans mon terminal, j'ai bien "192.168.1.200" (ou d'autre, lors des réponses des sites web par exemple)

    Mais je souhaiterais faire sa dans un fichier shell.

    Donc en fait, je souhaiterais faire passer le "filtre" à chaque packet séparément (et par exemple finir avec un

    echo "$ip-src -> $ip-dst"

    (bien sur, c'est plus compliquer que sa pour le resultat)

    Sauf qu'ici, je ne peux pas faire sa dans un shell.

    Savez vous comment je peux faire pour faire ligne par ligne ? (packet par packet ?)

    Merci !


    -
    Edité par Bhasher 1 octobre 2017 à 19:17:24

    • Partager sur Facebook
    • Partager sur Twitter

    CodeWe is an open-source live code-sharing website.

      1 octobre 2017 à 18:12:42

      salut,

      STFW : comment lire des données ligne par ligne.

      c'est valable pour tout (fichier, sortie de commande...); ça n'a aucun rapport avec "analyse réseau".

      -
      Edité par dantonq 1 octobre 2017 à 18:39:54

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        1 octobre 2017 à 18:32:45

        Bonjour Brigamers,

        Je ne suis pas sur de comprendre ce que tu veux faire.
        Tu veux dire quoi par "faire ça dans un fichier shell" (je suppose que tu veux pas juste mettre la commande dans un script).

        Si le soucis est d'exécuter plusieurs instructions sur une ligne en sortie de tcp tcp dump, tu peux utiliser cette syntaxe :

        echo "une ligne" | while read l; do echo $l; echo $l; done

        qui affichera deux fois "une ligne".

        Sinon pour info la commande iptables permet aussi de définir des règles pour loguer des paquets spécifiques, ça pourrait t'intéresser.

        • Partager sur Facebook
        • Partager sur Twitter
          1 octobre 2017 à 19:20:33

          Merci de vos réponses.

          Ce que j'etend par "faire cela avec un fichier Shell", c'est executer un ficher .sh

          tcpdump renvoie les résultat en "echo" à chaque nouveau paquet.

          Ce que je souhaiterais faire, c'est traité chaque paquet un par un (chaque ligne) pendant l'execution de la commande.

          Et comme le dis dantonq, cela est valable pour toute les commandes de ce type, donc iptables ne résout qu'un des problemes.

          Merci !

          • Partager sur Facebook
          • Partager sur Twitter

          CodeWe is an open-source live code-sharing website.

            1 octobre 2017 à 20:00:15

            Je ne comprends toujours pas dsl.
            Si tu veux le faire avec un script shell tu mets ta commande dans un script shell et ensuite tu exécutes ton script au lieu de ta commande, donc je pense que quand tu dis " exécuter un ficher "sh"  " , tu sous-entends faire quelque chose que tu n'arrive pas à faire avec une commande.

            La commande que je t'ai donné permet d'exécuter une suite d'instruction pour chaque ligne en sortie de tcpdum, donc pour chaque paquet.
            Je la reformule dans le cas de tcpdump :

            sudo tcpdump | while read l; do
              ip_src=$(echo $l | someGredSedCmd);
              ip_dest=$(echo $l | someGredSedCmd);
              echo "$ip_src $ip_dest"
            done
              



            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2017 à 20:24:41

              tcpdump peut probablement recevoir, en option, une indication de formatage de sa sortie, qui permettrait de se dispenser de grep/sed/awk...
              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                17 janvier 2019 à 10:09:08

                Voici la commande :

                sudo tcpdump -nn src  net x.x.x.x/24 and dst x.x.x.x | grep "x.x.x.x" | cut -d">" -f1-2 | grep "IP" | cut -d" " -f3-5




                -
                Edité par Dlbt 17 janvier 2019 à 10:30:27

                • Partager sur Facebook
                • Partager sur Twitter

                Comment lire des données ligne par ligne.

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown