logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [shell] utilisation de netcat (nc)  (Lu 3885 fois)
Tqup3
Profil challenge

Classement : 713/54286

Néophyte
*
Hors ligne Hors ligne
Messages: 22


Voir le profil
« le: 02 Novembre 2008 à 03:57:49 »

Bonsoir à tous,
  Voilà, je dois contacter un server distant par l'intermédiaire de netcat. Une fois connecté, je dois envoyer plusieurs requêtes sur ce server.
Prenons l'exemple d'un server IRC (strict hasard hein  ) : je dois utiliser 3 "requêtes" pour me connecter et joindre un channel. J'y arrive très bien à la mano, c'est à dire en tapant dans la console, une à une les instructions.

  Cependant, j'ai voulu rendre la tâche automatique en faisant un petit script. Le seul moyen que j'ai trouvé après de multiples recherches chez mon ami favori est une ligne du style :
Code:
echo -e "requete1\nrequete2\nrequete3\n" | nc -vv ip_server port_server

  Ceci fonctionne très bien mais le problème et que je dois récuperer ce que me renvoit le server après la troisième requête afin d'y effectuer un traitement. Et là je me retrouve coincé car je ne peux effectuer de boucles iératives ni même de conditions de cette manière.

  En fait j'ai remarqué que l'instruction "nc" bloque le script jusqu'à ce que la connection se termine. Moi j'aimerais faire un "nc" puis sans refermer la connection, faire du traitement puis a nouveau un "nc". Je ne sais pas si je suis très clair. J'ai trouvé les arguments -c et -e mais je n'arrive pas à les exploiter plus que ça et je dois dire que les tutos "nc" se ressemblent tous sur google.

  Pour faire un peu plus synthétique (parce que là c'est raté :p), je veux pouvoir effectuer du traitement suivant les réponses du server sans avoir à me reconnecter dessus à chaque fois que je veux lui envoyer une nouvelle donnée.

Je ne sais pas si je suis très clair, n'hésitez pas à m'en demander plus si je me suis mal exprimé !

Merci,
Tqup3
« Dernière édition: 02 Novembre 2008 à 20:43:13 par Tqup3 » Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54286

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #1 le: 03 Novembre 2008 à 09:23:54 »

Netcat n'est vraiment pas l'outil adapté pour ce genre d'épreuve, mais passons...

  En fait j'ai remarqué que l'instruction "nc" bloque le script jusqu'à ce que la connection se termine. Moi j'aimerais faire un "nc" puis sans refermer la connection, faire du traitement puis a nouveau un "nc". Je ne sais pas si je suis très clair. J'ai trouvé les arguments -c et -e mais je n'arrive pas à les exploiter plus que ça et je dois dire que les tutos "nc" se ressemblent tous sur google.

Y'a pas de miracle. si tu veux vraiment conserver la connexion de ton netcat avec le serveur et effectuer des traitements en parallèle... ben faut paralléliser. Par exemple en lançant netcat dans un processus fils, puis en envoyant les requêtes sur son entrée standard et lire les réponses sur ses sorties standard et d'erreur. Je ne connais pas netcat mais je ne vois aucune raison pour que cela ne fonctionne pas.

Cela dit, je me répète, je ne vois pas trop l'intérêt de gérer une connexion irc dans un shell, c'est tellement plus simple d'utiliser un langage de script pour faire ça...
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Tqup3
Profil challenge

Classement : 713/54286

Néophyte
*
Hors ligne Hors ligne
Messages: 22


Voir le profil
« #2 le: 03 Novembre 2008 à 15:35:41 »

Merci de ta réponse _o_, je vais me renseigner illicopresto sur la création de proc fils en shell. Je tiens à préciser que j'ai bien pensé à écrire un script avec un clident irc déjà tout prêt mais ça ne m'interesse pas de le faire de cette manière pour le moment.
Mon but, en faisant les épreuves de programmation, est de comprendre le shell Unix (je viens de me mettre en dual boot) et l'utiliser de manière presque automatique. J'ai fait toutes les épreuves de programmation en shell jusqu'à présent, alors je continue sur ma lancée.
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54286

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #3 le: 03 Novembre 2008 à 17:22:14 »

Mon but, en faisant les épreuves de programmation, est de comprendre le shell Unix (je viens de me mettre en dual boot) et l'utiliser de manière presque automatique.

J'ai bien compris. Ce n'est pas idiot, mais attention à ne pas tomber dans l'excès inverse : le shell, on peut faire plein de choses avec, mais quand il y a des solutions plus simples et rapides à mettre en œuvre, autant les utiliser (dès que mes scripts se compliquent un peu, je dégaine Perl, pour ma part).
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Tqup3
Profil challenge

Classement : 713/54286

Néophyte
*
Hors ligne Hors ligne
Messages: 22


Voir le profil
« #4 le: 03 Novembre 2008 à 18:37:53 »

Ok, en fait pour être plus précis, je souhaitais d'abord apprendre le bash classique puis une fois plus ou moins "maitrisé" continuer par le perl et le python (qui apparement ont l'air lié au bash entre autres à moins que je ne me trompe totalement).

Mais si j'en arrive à atteindre la limite du bash, je me mettrais à ces 2 autres langages puisque je sais que de toutes manières j'y serais obligé un jour où l'autre ! Je vais essayer de me trouver 2-3 tutos sur perl et je vais voir comment je vais appréhender ça !

Merci pour tous tes éclaircissements !
Tqup3
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54286

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #5 le: 03 Novembre 2008 à 19:37:52 »

le perl et le python (qui apparement ont l'air lié au bash entre autres à moins que je ne me trompe totalement).

Oui, tu te trompes complètement.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Pages: [1]
  Imprimer  
 
Aller à: