Question

Je suis en train de faire un projet dans lequel je dois fabriquer des paquets personnalisés. C'est, je dois avoir le contrôle de chaque en-tête de paquet. Je suis en train de le faire en utilisant des prises. Au fond, ce que je dois faire est la suivante:

SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);

Le ethernet_type est quelque chose qui est adapté, non standard, comme 0xAAAAA. J'utilise htons (). En outre, il est très préférable pour moi de ne pas utiliser WinPCAP.

En ce moment, je reçois une erreur 10043, protocole non pris en charge.

Le message d'erreur semble indiquer que je peux configurer le protocole dans mon système, mais je ne sais pas comment faire.

Il dit:

Protocole non pris en charge. Le protocole demandé n'a pas été configuré dans le système, ou pas mise en œuvre pour qu'il existe. Par exemple, un appel socket demande un socket SOCK_DGRAM, mais spécifie un protocole de flux.

Il y a quelques questions différentes, donc si quelqu'un a une entrée à tout ce que je voudrais vraiment l'apprécier.

Était-ce utile?

La solution

Selon ces articles , Microsoft a supprimé le support des sockets brut à partir de Windows dans un correctif non amovible. Ainsi, vous pouvez être hors de la chance, sauf si vous voulez passer à un autre système d'exploitation.

Autres conseils

Je pense que l'ajout de nouveaux protocoles à l'appel socket serait quelque chose de très difficile. Il faudrait faire en sorte que la prise soutient cet appel. Je pense que vous auriez à recompiler la fonction de prise et je ne pense pas qu'il est facilement possible sous Windows.

Crafting paquets personnalisés ne vous oblige pas à créer un nouveau protocole

Je pense que la bonne façon de spécifier une socket RAW est comme ceci

SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

Si vous êtes vraiment essayer de jouer avec ethernet premières comme vos noms de variables suggèrent, alors soit vous utilisez le pilote de winpcap ou d'écrire votre propre pilote

Je ne pense pas qu'il y ait une autre solution « facile » à Ethernet brut. winpcap est assez facile et vous pouvez le vérifier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top