Utiliser des sockets raw avec C #

Je veux écrire un scanner de port en C# et je ne peux pas utiliser SocketType.Raw raw sockets ont été retiré de la version de bureau de windows. Je ne peux pas utiliser SharpPcap un ou l'autre ou les autres wrapper pour Winpcap comme je l'ai utiliser PPPoE pour la connexion à internet et Winpcap ne supporte pas les périphériques PPP.

J'ai besoin d'utiliser une bibliothèque qui implémente les sockets raw et ne pas compter sur winpcap.

Des idées? Essentiellement, j'ai besoin d'envoyer SYN, recevoir SYN/ACK ou la taxe de vente, mais ne pas envoyer d'accusé de réception de retour.

edit:

Pour les gens qui ne croient pas les sockets RAW sont allés de la version de bureau de Windows, voir ici: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs. 85).aspx

Sur Windows 7, Windows Vista, Windows XP avec Service Pack 2 (SP2) et Windows XP avec Service Pack 3 (SP3), la capacité à envoyer du trafic sur les sockets raw a été restreinte de plusieurs façons:

  • TCP données ne peuvent pas être envoyés sur les sockets raw.
  • Des datagrammes UDP avec une défaillance de l'adresse de la source ne peut pas être envoyé sur les sockets raw. L'adresse IP source pour les sortants du datagramme UDP doit exister sur une interface réseau ou le datagramme est supprimée. Ce changement a été fait pour limiter la capacité de code malveillant à créer distribuées de déni de service attaques et les limites de la possibilité d'envoyer de l'usurpation de paquets (paquets TCP/IP avec une fausse adresse IP source).
  • Un appel à la bind fonction avec un socket raw pour le IPPROTO_TCP protocole n'est pas autorisé.
    Note La bind fonction avec un socket raw est permis pour les autres protocoles (IPPROTO_IPIPPROTO_UDPou IPPROTO_SCTPpar exemple).

source d'informationauteur Mack