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

VB.NET Discussion :

[VB.NET] [Socket] Tester si un port est ouvert ?


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut [VB.NET] [Socket] Tester si un port est ouvert ?
    Bonjour,

    je souhaiterais tester si un port est ouvert ou non. Je sias qu'on peut connecter une socket sur ce port et si elle ets connectée alors le port est ouvert sinon non mais je voulais savori si il n'y a pas une autre methode pour faire cela plus simplement avec une dll par exemple ou autre ...

    Merci

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    up

  3. #3
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Jamais abordé cette problématique, mais intuitivement je dirais qu'il ne doit pas exister d'API qui fait ça bien.

    L'ouverture/fermeture des ports dépend du firewall, et le firewall est une application externe (par forcément intégrée à windows). Je doute un peu qu'il y ai une couche standardisée pour aller interroger les firewalls.

    Qui plus est, je n'est jamais vu d'appli qui liste les ports d'un PC en disant s'ils sont ouverts ou fermés (pourtant qu'est ce que ça serait bien), à part celles qui sont intégrées directement dans l'interface des firewalls.

    Mais je peux me tromper. Au pire ça remontera ton post

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    lol ok merci pour l'explication... bah la methode de tenter de connecter une socket à un port est elle bonne ? Probleme ca prends tu temps...

    Une autre idée ?

  5. #5
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par Mose Voir le message
    Qui plus est, je n'est jamais vu d'appli qui liste les ports d'un PC en disant s'ils sont ouverts ou fermés (pourtant qu'est ce que ça serait bien), à part celles qui sont intégrées directement dans l'interface des firewalls.

    Mais je peux me tromper. Au pire ça remontera ton post
    Effectivement, tu te trompes. Il existe une multitudes de logiciels qui le font très bien (Superscan par exemple).


    Aspic, je suis dans le même cas, mais étant moins expérimenté, je suis encore en train de chercher aussi. Je voudrai que lorsqu'un port est ouvert, mon appli liste également le service ou logiciel qui l'utilise.
    Pour ceux qui diront "mais pourquoi le coder alors qu'il en existe déjà tout plein ?", je répondrai tout simplement que je voudrai implémenter cette fonction dans un logiciel qui contient une liste d'ordinateurs d'un parc, avec différentes interactions.

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par ghost emperor Voir le message
    Effectivement, tu te trompes. Il existe une multitudes de logiciels qui le font très bien (Superscan par exemple)....
    Si je ne m'abuse, SuperScan fait un scan des ports.
    Il ne va pas récupérer une liste mais essaye tous les ports.
    On en revient à la vieille méthode des sockets, un peu bourrin.

    Bref je persiste : on ne peut pas avoir la liste des ports ouverts ou fermés, à moins d'avoir une API qui va interroger son firewall.
    En revanche on peut effectivement tester les ports individuellement.
    Pour accélerer le process, on fait ça en multithread et c'est parti !

  7. #7
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Aspic Voir le message
    lol ok merci pour l'explication... bah la methode de tenter de connecter une socket à un port est elle bonne ? Probleme ca prends tu temps...

    Une autre idée ?
    Je ne voit pas d'autre solution, mais un autre problème : si le port est en écoute et que le nombre de connexion autorisé est atteins ton socket ne ce connectera pas et apriori tu ne verra pas la différence avec un port fermé.

    Si c'est du local tu as : cmd / netstat qui peut p-e correspondre à ce que tu cherche.
    Il est probablement possible de récupérer les informations de cette commande. (mais là, je sais pas comment faire, je sors jamais du framework)

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Ca c'est du boooooo déterrage de poste ou je m'y connais pas

  9. #9
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Quel vieux topic !

    Bref, la méthode apr socket ne marche pas de toute manière, en effet le port 21 est fermé par exemple alors que je me connecte dessus par filezila ===> mé"thode pas fiable du tout et de nos jours il existe pas de méthode pour tester les ports... snif

  10. #10
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Quel vieux topic !

    Bref, la méthode apr socket ne marche pas de toute manière, en effet le port 21 est fermé par exemple alors que je me connecte dessus par filezila ===> mé"thode pas fiable du tout et de nos jours il existe pas de méthode pour tester les ports... snif
    Oui et non.
    Y'en a bien une : coder son propre Firewall
    (Ou patcher un firewall open source)

    Have fun !

  11. #11
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Mose Voir le message
    Oui et non.
    Y'en a bien une : coder son propre Firewall
    (Ou patcher un firewall open source)

    Have fun !
    + 1

  12. #12
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    Oui et non.
    Y'en a bien une : coder son propre Firewall
    (Ou patcher un firewall open source)

    Have fun !
    Sans remettre en question vos compétences (loin e là), cela doit forcément être possible car crtains logiciels le font très bien (superscan par exemple). A moins que je me soit mal exprimé.

    Superscan pour ceux qui ne sauraient pas de quoi il s'agit est un logiciel qui scan les ports d'un pc, indique les ports ouverts et par quoi ils sont utilisés. Du coup, si un port est utilisé par un trojan, on le saura et on pourra agir en conséquence pour éliminer la menace.

    Si un logiciel comme ça le fait, alors c'est que ça doit bien être possible non ? Ou alors on m'aurait menti jusque-là...

  13. #13
    Membre expérimenté

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Points : 1 738
    Points
    1 738
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ghost emperor Voir le message
    Sans remettre en question vos compétences (loin e là), cela doit forcément être possible car crtains logiciels le font très bien (superscan par exemple). A moins que je me soit mal exprimé.

    Superscan pour ceux qui ne sauraient pas de quoi il s'agit est un logiciel qui scan les ports d'un pc, indique les ports ouverts et par quoi ils sont utilisés. Du coup, si un port est utilisé par un trojan, on le saura et on pourra agir en conséquence pour éliminer la menace.

    Si un logiciel comme ça le fait, alors c'est que ça doit bien être possible non ? Ou alors on m'aurait menti jusque-là...
    Franchement, là c'est pas drôle, on peut facilement onstater que tu ne lis pas les topics avant de poster dessus...


    Citation Envoyé par Mose Voir le message
    Si je ne m'abuse, SuperScan fait un scan des ports.
    Il ne va pas récupérer une liste mais essaye tous les ports.
    On en revient à la vieille méthode des sockets, un peu bourrin.

    Bref je persiste : on ne peut pas avoir la liste des ports ouverts ou fermés, à moins d'avoir une API qui va interroger son firewall.
    En revanche on peut effectivement tester les ports individuellement.
    Pour accélerer le process, on fait ça en multithread et c'est parti !

  14. #14
    Membre régulier Avatar de ghost emperor
    Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Septembre 2007
    Messages : 170
    Points : 122
    Points
    122
    Par défaut
    Franchement, là c'est pas drôle, on peut facilement onstater que tu ne lis pas les topics avant de poster dessus...
    Oh si je l'ai lu vu que j'en ai besoin. Je ne m'amuse pas à répondre pour rien.
    Mais c'est bien beau de dire "c'est pas possible car c'est le firewall qui le gère"... En tout cas, je n'ai pas eu plus d'indications sur la différence entre un scanner de ports et ce que fait un firewall (à part que l'on me répéte que c'est pas pareil). C'est peut-être évident pour vous mais je n'ai rien compris. Un scanner de port est indépendant du firewall et cela fonctionne très bien, et c'est cela que j'aurais voulu implémenter dans une application, même si je dois scanner tous les ports un par un (dans quel cas je choisi un intervalle).

  15. #15
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Salut tout le monde
    Evidemment que ça n'a rien à voir avec le firewall, ce n'est pas le firewall qui ouvre ou ferme les ports que je sache...

    Encore que j'ai déjà largement entendu pire : << ben nan hein, tu peu pas ouvrir ton port et le lire en local passque le firewall va le bloquer dans l'interface réseau >>
    et là je me dit <<...heu...>>

    a+
    TSalm

  16. #16
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Sinon, je viens de trouver cette solution (c'est du C# et seulement compatible avec le framework 2.0)
    Ca liste les connections clients tcp , serveur tcp et serveur udp.

    Ca n'existe pas les connexion "client udp" ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
     
    using System.Net.NetworkInformation;
    using System.Net;
     
    namespace TestPortsTXPOuverts
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void btnGO_Click(object sender, EventArgs e)
            {
                listBoxPorts.Items.Clear();
     
     
                IPGlobalProperties ipGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
     
                 TcpConnectionInformation[] tcpConnectionInformations = ipGlobalProperties.GetActiveTcpConnections();
                 IPEndPoint[] tcpListenerInformations = ipGlobalProperties.GetActiveTcpListeners();
                 IPEndPoint[] udpListenerInformations = ipGlobalProperties.GetActiveUdpListeners();
     
     
                 listBoxPorts.Items.Add("===tcp connections===");
                 foreach (TcpConnectionInformation tcpConn in tcpConnectionInformations) {
                     listBoxPorts.Items.Add(tcpConn.LocalEndPoint.Port);
                 }
     
                 listBoxPorts.Items.Add("===tcp listeners===");
                 foreach (IPEndPoint ipendpoint in tcpListenerInformations) {
                     listBoxPorts.Items.Add(ipendpoint.Port);
                 }
     
                 listBoxPorts.Items.Add("===udp listeners===");
                 foreach (IPEndPoint ipendpoint in udpListenerInformations)
                 {
                     listBoxPorts.Items.Add(ipendpoint.Port);
                 }
     
     
     
            }
        }
    }

  17. #17
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Juste une petite précision : c'est pour tester les ports ouverts en local ou sur une machine distante ?

  18. #18
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par TSalm Voir le message
    Juste une petite précision : c'est pour tester les ports ouverts en local ou sur une machine distante ?
    Je dirais pour tester les ports en local dans un premier mais sur une machine distante pourrait etre interessant

  19. #19
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Je dirais pour tester les ports en local dans un premier mais sur une machine distante pourrait etre interessant
    Pour ce qui est de récuperer les ports ouverts en local, il n'y a évidemment rien à voir avec le Firewall tant que celui-çi ne tue pas les processus qui tentes d'ouvrir des ports (mais c'est alors bien plus qu'un firewall). Je dirais que le firewall agit sur une couche "supérieure" que la couche "local".
    As tu essayés de ré-adapter le code que je fournis précédemment ?
    Vois-tu un soucis dans ce code ? (je pose la question par ce que je l'utilise aussi)

    Par contre, pour scanner des ports sur une machine distante, c'est une autre pair de xxx qu'il te faut . Là, le firewall est là pour bloquer ce genre de choses (sinon à quoi il servirait ? )
    Pourquoi alors ne pas réinventer la roue et utiliser NMap ( http://insecure.org/nmap/download.html ) ? Il te suffit de récuperer la sortie standard d'un appel sur nmap.

    A+ et bon courage
    TSalm

  20. #20
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Quel vieux topic !

    Bref, la méthode apr socket ne marche pas de toute manière, en effet le port 21 est fermé par exemple alors que je me connecte dessus par filezila ===> mé"thode pas fiable du tout et de nos jours il existe pas de méthode pour tester les ports... snif
    C'est bizarre.
    Peut-tu me donner le code que tu utilises pour tester si un port est ouvert ou pas ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2010, 10h59
  2. Comment tester si un port est ouvert
    Par Rollois dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2008, 10h52
  3. [VB.NET 2.0] [Socket] Tester ouverture de ports !
    Par Aspic dans le forum VB.NET
    Réponses: 1
    Dernier message: 26/05/2007, 17h11
  4. Tester si un port est bloqué via Dos
    Par justgreat dans le forum Sécurité
    Réponses: 10
    Dernier message: 06/04/2007, 01h41
  5. Réponses: 14
    Dernier message: 07/07/2006, 16h27

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