IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Un petit peu d'aide sur sed :)


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Par défaut Un petit peu d'aide sur sed :)
    Salut,

    J'ai le texte suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,vb_login_username=theclem35&vb_login_password=******&s=&securitytoken=********&do=login&vb_login_md5password=&vb_login_md5password_utf=
    Je souhaite supprimer la chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,
    et remplacer tous les & (seulement APRES l'url) par des \n.

    J'utilise la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\tNo-Op.*\\r\\n,\\r\\n,/\n/g; s/&/\n/g'
    qui me donne un bon résultat sauf que les & sont remplacés dans tout le fichier.
    Comment lui faire remplacer que depuis le No-Op ? Ou bien plus simple, depuis la deuxième tabulation ? De même je pourrai modifier la commande pour supprimer la ligne parasite à partir de cette deuxième tabulation.

    Ca serait d'ailleurs plus pratique car la ligne parasite ne commence pas toujours pas No-Op...

    Merci!!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Ou bien plus simple, depuis la deuxième tabulation ? De même je pourrai modifier la commande pour supprimer la ligne parasite à partir de cette deuxième tabulation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\(.*\)\t.*\\n,\(.*\)/\1 \2/'
    sauf que les & sont remplacés dans tout le fichier.
    Parce qu'il faut cibler ta ligne, soit par son numéro de ligne, soit par un motif :


  3. #3
    Membre confirmé Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Par défaut
    Salut,

    Et si dans ce cas précis, il n'y a qu'une seule ligne (puisque c'est un flux), et que le motif serait la deuxième tabulation de cette ligne ?
    Cela ne fonctionne pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/\(.*\)\t,\(.*\)/\1 \2/ s/&/\n/g''

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Parce que le "motif" cible la ligne et pas seulement une partie de la ligne

    J'ai jeté un oeil vite fait à la page de man de "tshark", et j'y a vu l'option "-E" :
    -E <field print option>
    Set an option controlling the printing of fields when -T fields is selected.

    Options are:

    header=y|n If y, print a list of the field names given using -e as the first line of the output; the field
    name will be separated using the same character as the field values. Defaults to n.

    separator=/t|/s|<character> Set the separator character to use for fields. If /t tab will be used (this is
    the default), if /s, s single space will be used. Otherwise any character that can be accepted by the
    command line as part of the option may be used.

    quote=d|s|n Set the quote character to use to surround fields. d uses double-quotes, s single-quotes, n no
    quotes (the default).
    Ne pourrais-tu pas essayer de t'en servir pour mieux cibler ta mise en forme ?

  5. #5
    Membre confirmé Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Par défaut
    Malheuresement on a le choix seulement entre une tabulation ou un espace.
    Ou encore 1 seul caractère. Donc pas de retour ligne, ce qui m'aurais arrangé!

    Mais je touche au but. J'en suis à cette commande la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tshark -i 3 -l -R "(http.request.method == \"POST\") && ((data-text-lines contains \"pass\") || (data-text-lines contains \"pwd\"))" -T fields -e ip.src -e http.request.full_uri -e text | sed "/^/{s//\n--------------------------- Nouvelles données ---------------------------\n\n/}; s/\(.*\)\t.*\\n,\(.*\)/\1\n\2/; s/&/\n/g"
    Ce qui m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    --------------------------- Nouvelles données ---------------------------
     
    192.168.1.7     http://www.developpez.net/forums/login.php?do=login
    vb_login_username=theclem35
    vb_login_password=******
    s=
    securitytoken=*******
    do=login
    vb_login_md5password=
    vb_login_md5password_utf=
    Le problème c'est que si j'ai des & dans l'url, ils sont remplacés aussi.
    Vu que je conserve le separator sous forme de tabulation, j'ai donc juste besoin de dire à ma substitution de &, de le faire qu'à partir du 2ème motif \t. C'est la où je bloque! (En sachant que tout est sur 1 seule ligne à la base)

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Bon sans garantie, juste testé sur ton exemple précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cat plop 
    192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,vb_login_username=theclem35&vb_login_password=******&s=&securitytoken=********&do=login&vb_login_md5password=&vb_login_md5password_utf=
     
    $ sed 's/\(.*\)\t.*\\n,\(.*\)/\1\n\2/;:z;s/\(.*\n\)\(.*\)&/\1\2\n/;tz' plop
    192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1
    vb_login_username=theclem35
    vb_login_password=******
    s=
    securitytoken=********
    do=login
    vb_login_md5password=
    vb_login_md5password_utf=
     
    $

Discussions similaires

  1. Un peu d'aide sur la class string
    Par KindPlayer dans le forum C++
    Réponses: 27
    Dernier message: 03/06/2008, 18h16
  2. un peu d'aide sur sizeof
    Par coyotemk dans le forum Débuter
    Réponses: 7
    Dernier message: 17/04/2008, 01h17
  3. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 20h04
  4. Réponses: 12
    Dernier message: 10/05/2007, 10h18
  5. svp un peu d'aide sur mon update, resumé simple en dessous
    Par hansaplast dans le forum Langage SQL
    Réponses: 11
    Dernier message: 14/11/2005, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo