Bonsoir à tous,
J'ai une petite question, est ce qu'il y a un moyen de détecter l'ouverture d'un port TCP ou UDP sous windows Xp, en utilisant le langage C++ + API windows,
Si ça est possible, comment on peut le faire;
merci d'avance.
Bonsoir à tous,
J'ai une petite question, est ce qu'il y a un moyen de détecter l'ouverture d'un port TCP ou UDP sous windows Xp, en utilisant le langage C++ + API windows,
Si ça est possible, comment on peut le faire;
merci d'avance.
tu veux détecter une tentative d'ouverture (il n'y a pas de programme à l'écoute sur ce port) ou bien une ouverture réussie (il y a un programme à l'écoute derrière le port) ?
Merci pour votre réponse "c'était très rapide"
je veux détecter une tentative d'ouverture, c'était mon but, mais s'il est impossible (càd de gros programmation comme détecteur d'intrusion), donc je me limite au détection d'une ouverture réussite;
et merci
Il y a 2 approche possible à ton problème :
- L'approche interne, c'est à dire un programme sur la machine XP qui tourne et qui détecte les tentatives d'ouverture. Cette solution va probablement nécessiter du code.
- L'approche externe, c'est à dire un détecteur de scan sur le réseau de ta machine qui lorsqu'il va voir plusieurs tentatives de connexion (il ne saura pas forcément si elles réussisent ou non puisqu'il n'a pas la vision interne) va pouvoir faire quelque chose. Snort peut être ce détecteur (par contre, je ne connais pas bien les possibilités qu'il a en terme de réaction/déclenchement d'action). Je pense que cette solution nécessite nettement moins de code mis à part du shell script et des expressions régulières.
Merci pour l'explication;
je préfère L'approche interne, est ce que vous avez une idée comment réaliser ça?
thanks
Bonjour,
J'ai également tenté de détecter d'éventuelles ouvertures de ports sur un ordinateur. Voici comment j'ai procédé :
J'ai d'abord créé (en C++) une classe qui implémente un serveur Winsock 2. Normalement ce serveur devrait gérer les connexions entrantes du port que j'ai défini. Or, comme vous le savez, il n'est pas possible d'ouvrir deux ports ayant le même numéro. L'idée était donc de "scanner" le maximum de ports disponibles en effectuant une tentative d'ouverture du port. Si il y a une erreur, le port est déjà ouvert, il est détecté. Seulement une telle procédure est extrêmement lente et après avoir attendu 20 minutes, je me suis rendu compte que le programme n'avait scanné que quelques centaines de ports ...
Une autre solution, que je n'ai pas encore testée, serait de faire un Hooking. Les fonctions Winsock utilisées par les protocoles TCP/UDP sont toujurs les mêmes, ils suffirait donc d'injecter une DLL dans tous les processus puis de détourner les fonctions de lecture/écriture des sockets vers celles définies dans la DLL (IAT Hooking). Ainsi, les envois de paquets vers le réseau seraient automatiquement détectés par le programme, tous comme les réceptions.
De toute façon, à quoi servirait le programme ? Si cela sert à détecter les virus, il faut savoir que les routeurs possèdent des pare-feux tout comme les antivirus.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager