2010-09-25 13 views
2

Je suis en train d'envoyer une requête ARP avec python, en collaboration avec dpkt, et je l'ai trouvé quelques exemples de code qui utilise:python socket.PF_PACKET

socket.socket(socket.PF_PACKET, socket.SOCK_RAW) 

Je comprends que vous devez utiliser des sockets raw pour envoyer cela, mais il est dit que socket.PF_PACKET n'existe pas. Et il n'y a rien dans les docs python à ce sujet que j'ai vu. Alors, où cette personne aurait-elle obtenu PF_PACKET, que ferait-elle, et comment puis-je l'obtenir?

Répondre

2

modifié ma réponse:

PF_PACKET a été introduit dans les versions Linux 2.0 et ci-dessus. Python n'emballe que l'interface de socket du système d'exploitation. Le commentaire AaronMcSmooth vérifie qu'il est disponible sous Linux. Ce n'est pas disponible sur mac si.

Il ressemble également à AF_PACKET peut obtenir préféré à 3,2

+1

ce n'est pas juste. Je l'ai sur 2.6. Mais je suis sur Linux;) En tout cas, il semble être non documenté (en python) AFAIK. – aaronasterling

+0

@AaronMcSmooth: J'ai modifié ma réponse, je suppose en même temps que votre commentaire. Tu as raison. Python ne fait qu'encapsuler l'interface de socket du système d'exploitation et n'est disponible que sous Linux – pyfunc

+0

Ah cela a du sens. Je suis sur un mac, alors c'est pourquoi il n'y en a pas, je suppose. –