11
votes

Utilisation de LibwirShark pour obtenir une fonctionnalité WireShark Programmatiquement

Si je veux écrire un script qui utilise la fonctionnalité de Wireshark, j'utilise Tshark. J'entends aussi une libwellerie qui peut être utilisée lors de la rédaction d'un programme en C mais, pour la vie de moi, je ne peux pas trouver aucune documentation pour cela! J'ai essayé d'isoler le code de la bibliothèque dans l'arborescence source Wireshark, mais il semble que le code n'est pas très bien organisé et que cet isolement n'existe pas (soit cela, ni je n'ai pas réussi à le trouver).

J'ai deux questions:

  1. Ai-je raison de penser que libwerviers peut en effet être utilisé pour obtenir de manière programmative toutes les fonctionnalités que je peux obtenir de Wireshark / Tshark?
  2. Pouvez-vous me signaler à toute documentation / tutoriels / exemples sur le sujet? Même quelques exemples simples peuvent aller très loin. À défaut, pouvez-vous me signaler à une explication de la façon dont je peux me retrouver dans l'arbre Source Wireshark?

7 commentaires

Juste parce que quelque chose a «lib» devant cela ne signifie pas nécessairement que c'est apte à la consommation de masse.


Vrai. Donc, votre point est-il, "n'en pensez même pas"?


Non, mon point est que cela peut ne pas être bien documenté ... parce que ce n'est pas bien documenté. Vous êtes peut-être dirigé vers un territoire inexploré. Si cela vaut la peine pour vous, puis plongez dans. Espérons-le, je me trompe, je dis simplement que je ne me tiens pas la respiration pour un bon tutoriel ou quelque chose comme ça.


Je ne m'attendais pas vraiment à une vaste documentation qui se cache quelque part. Je suis plutôt bon pour trouver des choses sur Internet! Ce que j'espérais en publier cette question était que peut-être qu'il y a un peu d'information adolescent quelque part qui peut soulager ma douleur un peu!


J'espère que quelqu'un ici a cela pour vous, Dieu sait que je ne fais pas :)


Qu'essayez-vous de résoudre? Si c n'est pas une contrainte difficile, consultez bro , "le python / rubis pour le réseau . "


C n'est pas une contrainte difficile, mais la performance est (ou du moins pourrait être à l'avenir). Je préfère moi-même python chaque fois que je peux l'utiliser, mais cela pourrait être moins attrayant dans ce projet. J'aimerais toujours vérifier. La principale chose que je veux réaliser est d'extraire des flux de voix RTP. Wireshark elle-même peut le faire (Analyse de la téléphonie / RTP / Stream ...), mais Tshark ne semble pas être capable de le faire. Pensez-vous que Bro peut y parvenir? Je n'arrive pas à trouver beaucoup de choses liées à Python sur leur site Web.


4 Réponses :


1
votes

Même si j'ai écrit des scripts pour la fonctionnalité Wireshark dans le cadre de mon projet d'automatisation de certaines choses.

Le meilleur à faire est d'utiliser des addons Wireshark comme suit:

  1. TSHARK Pour ajouter un fichier PCAP, appliquer un filtre, mais si vous trouvez une fonctionnalité manquante, modifiez simplement TSHARK.C dans le code source Wilehark.
  2. CAPInfos pour donner des détails tels que le nombre de paquets ni de taille de fichier, etc. (il y a un script appelé Capinfos dans le code source Wireshark éditez-le si vous souhaitez plus de fonctionnalités)

    Veuillez noter que les add-ons du travail uniquement sous Linux et Capinfos est écrit dans le script Shell. Vous pouvez donc utiliser les mêmes scripts Shell et créer de nouveaux scripts pour une meilleure fonctionnalité.

    Même j'avais été confrontés à beaucoup de problèmes au départ car il n'y a pas de documentation appropriée. Mais une fois que vous avez commencé, cela se passe bien.


2 commentaires

Je ne sais pas ce que vous entendez par "Add-Ons", mais des plugins, et même des changements à la source de Wireshark, fonctionnent bien sur les autres ONU * xes et sous Windows, comme par exemple, par exemple, des add-ons Lua. Aussi, Capinfos est écrit en C; Ce n'est pas un script shell.


Salut pouvez-vous partager votre expérience?



10
votes

non.

Libwirshark n'est pas destiné à être utilisé en dehors de Wireshark lui-même, et à essayer de le faire, vous laissera votre sur votre propre pour essayer de comprendre ce qui se passe mal. Libwiraishark fait effectivement une partie de la partie des paquets analysant la partie de Wireshark (appelée epan pour e ereal Pa CKET ALYZER ALYZER), que vous pouvez voir Dans le Guide du développeur n'est pas tous de Wireshark. Ce que LibwirShark fournit en fait est l'interface principale de tous les distincteurs de protocole intégrés, des crochets pour les distincteurs de plug-in et l'API de dissection de paquets complets. Il repose sur les machines mis en place par le reste de Wireshark pour des outils qui ne sont pas directement des outils de dissection de paquets, mais permettent aux distincteurs de faire leur travail (par exemple, allouer des morceaux de mémoire de distribution, gérer des données comprimées ou cryptées, etc.).

Écrire un dissecteur à la place.
Si votre projet doit analyser strictement le trafic réseau d'une manière ou d'une autre, vous voudrez peut-être envisager d'écrire un dissecteur pour WireShark plutôt que de réinventer les nombreuses roues que Wirehark pourraient vous fournir. Si vous devez faire quelque chose de plus complexe, comme surveiller le trafic réseau, puis lancez d'autres tâches ou envoyer des données vous-même, vous êtes probablement mieux à utiliser TSHARK et shell Scripting comme vous êtes déjà (gardez à l'esprit que Vous ne devriez pas laisser tshark courir pendant des périodes extrêmement longues dans tous les cas).

Si vous voulez vraiment, vraiment veux utiliser LibwirShark directement, vous devrez résoudre toutes ses dépendances en quelque sorte (de préférence en faisant une bibliothèque autonome) et prévoir les hypothèses qu'il fait sur Wireshark (ou Tshark) en cours d'exécution. Le code de Libwirshark est tout bien organisé, il est juste qu'il consiste en tout répertoire EPAN dans l'arborescence source Wireshark et est disposé en fonction des conventions établies lorsque Wireshark était toujours éthéré. La documentation de chaque fonction est fournie dans les fichiers d'en-tête lorsqu'il est publiquement visible, et plus profondément dans les fichiers source dans tous les cas. N'oubliez pas également que le README .Developer distribué avec la version du code source que vous avez est un bon endroit pour obtenir quelques astuces (et vous pouvez aussi bien lire tous les fichiers Readme. * Si vous souhaitez entreprendre cette tâche).


3 commentaires

Merci. Cela explique beaucoup et me donne de la nourriture à la pensée. Je ne pense pas que je puisse écrire un dissecteur pour ce travail, cependant. J'ai besoin d'extraire des flux RTP (entre autres) et j'ai vu que Wireshark peut répertorier les flux et même extraire des données audio de leur part. Non seulement écrire un dissecteur ne aide pas à cela pour cela, même à l'origine de Tshark seul ne suffit pas. Le meilleur que je puisse faire est de courir TSHARK et d'obtenir des suggestions sur les flux, puis faites la dissection de paquets et l'extraction audio moi-même. Pouvez-vous penser à une meilleure approche? Et pourquoi ne devrais-je pas courir Tshark pendant des périodes extrêmement longues?


Wireshark (and Tshark) sera Exploiter de la mémoire après un tandis que. En utilisant DUTPCAP directement mieux pour les captures de longue opération, bien que vous ayez raison : Vous aurez toujours besoin de faire un post-traitement. Je n'ai pas beaucoup fait avec RTP moi-même, mais si vous demandez au Site Q & A Wireshark directement, quelqu'un qui sait plus à ce sujet est plus susceptible de le voir et éventuellement pouvoir aider.


Mais BUTPCAP est seulement pour capturer des paquets, n'est-ce pas? Je ne suis intéressé que par Wireshark pour ses capacités de dissection. libpcap (et donc WireShark / Tshark) n'est pas capable de résister aux charges que je travaille. Quoi qu'il en soit, je pense que je vais essayer un exemple plus précis sur le site Q & A Wireshark et espérer que quelqu'un puisse aider. Merci encore.



2
votes

Oui! Vous pouvez obtenir cette fonctionnalité en utilisant libwwirehark. J'ai écrit du code entier pour faire la même chose. Cela fonctionne simplement bien.


3 commentaires

par code je voulais dire..code non scripts, en utilisant libwirehark, j'ai écrit du code complet C ++ pour capturer et disséquer les paquets réseau !.


Pouvez-vous fournir un exemple sur la manière dont vous avez utilisé votre code C ++ @ sammy.d


Salut pouvez-vous partager votre expérience?



3
votes

Il est certainement possible d'utiliser LibwirShark en dehors de Wireshark lui-même, comme je sais NetExpect fait exactement cela. Vous pouvez essayer de rechercher sur le site Web de ce projet pour plus d'informations ou vous pouvez essayer de contacter Eloy Paris, l'auteur de NetExpective, pour d'autres entrées / pointeurs.


1 commentaires

Salut pouvez-vous partager votre expérience?