2009-12-14 15 views
1

Je travaille actuellement sur une application très ancienne. J'ai besoin de faire des changements dans cette application pour écouter la demande icmp à venir et décider de répondre ou de laisser tomber le paquet (type de contrôle d'accès sur ICMP). L'application est basée sur Winsock version 1.1. J'ai essayé différentes façons de créer un socket et de capturer le paquet icmp en utilisant le socket. Mais aucun de mes efforts n'a fonctionné.Comment implémenter un gestionnaire de paquets icmp avec la version 1.1 de winsock?

Quelqu'un peut-il m'aider? Ou est-ce totalement impossible?

Merci beaucoup pour votre réponse.

Répondre

0

Je ne pense pas que vous serez en mesure d'intercepter des paquets ICMP au niveau de l'application (Winsock), puisqu'il ne s'agit pas d'une fonction d'application. Vous devrez probablement écrire un pilote de filtre réseau pour la version de Windows sur laquelle votre application s'exécute.

0

Vous dites que l'application est ancienne, mais rien sur les systèmes d'exploitation sur lesquels vous l'exécutez. À moins que vous ne l'exécutiez sur Windows NT ou Windows 16 bits, il n'y a pas de raison pour que vous ne puissiez pas migrer vers Winsock 2. Vous pouvez download Winsock 2 pour Win95, et il est disponible dans tous les systèmes d'exploitation Win9x ultérieurs, ainsi comme dans Windows NT 4 et plus.

Si vous devez vraiment exécuter cette application sur Win16, il est peut-être possible de déterrer l'une des piles Winsock tierces de cette époque qui offrait un support de socket brut, mais cela ressemble à un gros problème, si vous voulez le faire légalement. Il est plus facile de simplement spécifier Win98 comme version minimale du système d'exploitation et de passer à autre chose.

EDIT: Je suppose que vous pouvez faire ce que vous voulez avec raw sockets, ce qui nécessite de passer à 2 Winsock si vous devez utiliser le Winsock intégré dans les systèmes d'exploitation MS. Changer votre programme pour utiliser Winsock 2 au lieu de Winsock 1.1 est facile; un changement de bibliothèque, un changement de fichier d'en-tête et un changement à l'appel WSAStartup, et voilà. Les sockets ICMP brutes vous permettent de construire n'importe quel paquet ICMP que vous voulez, et dans les systèmes d'exploitation les plus récents, vous pouvez également écouter les paquets ICMP. S'il s'avère que la pile ne vous laissera pas écouter les paquets dont vous avez besoin via les sockets, vous pouvez le faire avec les techniques packet capturing à la place.