J'essaie d'utiliser libpcap dans Python3 en utilisant CTYPES.
Compte tenu de la fonction suivante en C p> dans python, j'ai ce qui suit p> et l'erreur que je reçois est p> Comment gérez-vous des valeurs et des valeurs bla? p> p>
3 Réponses :
Vous devez probablement utiliser voir la section du didacticiel CTYPES sur Pointeurs pour plus d'informations. P> I ' m en supposant que vous ayez créé des mandataires CTTYPES pour les autres arguments. Si ctypes.pointer code>, comme celui-ci:
dev code> nécessite une chaîne, par exemple, vous ne pouvez pas simplement passer dans une chaîne Python; Vous devez créer un
CTYPES_WCHAR_P code> ou quelque chose le long de ces lignes. p> p>
Net et masque sont des types très spécifiques voir ci-dessous INT PCAP_LOOKUPNET (Const Char * Device, BPF_U_INT32 * NETP, BPF_U_INT32 * MASKP, CHAR * ERRBUF);
BPF_U_INT32 est vraiment juste ... Typedef u_int BPF_U_INT32;
puis passe en utilisant Vous pouvez récupérer la valeur en utilisant ctypes.c_uint32 code> est un type type em>. Vous avez besoin d'une instance:
ctypes.byref code>: p>
mask.value code>. p> p>
Vous devez créer des instances pour net code> et
masque code> et utiliser
byref code> pour les transmettre.
mask = ctypes.c_uint32()
net = ctypes.c_int32()
pcap_lookupnet(dev, ctypes.byref(net), ctypes.byref(mask), errbuf)
Stackoverflow dit pour éviter d'utiliser des commentaires tels que "Merci", mais j'ai passé beaucoup de temps à essayer de trouver une solution à cette question également. Alors merci! :)