Principal Autre Comment utiliser le dissecteur Lua dans Wireshark

Comment utiliser le dissecteur Lua dans Wireshark



En tant que l'un des meilleurs outils de capture de paquets réseau au monde, Wireshark vous permet d'atteindre des paquets de données spécifiques afin que vous puissiez les analyser à la fois hors ligne et en temps réel. Considérez l'application comme un moyen d'examiner de près les données circulant sur votre réseau, ce qui vous permet de détecter les problèmes et les irrégularités.

  Comment utiliser le dissecteur Lua dans Wireshark

Vous pouvez utiliser des dissecteurs si vous souhaitez analyser une partie spécifique des données d'un paquet. Comme son nom l'indique, ce processus 'dissèque' le code, vous permettant de supprimer certains aspects qui nécessitent votre attention. Ce didacticiel explique comment créer et utiliser des dissecteurs dans Wireshark à l'aide du langage de script Lua.

Avant de commencer - Ce que vous devez savoir sur les dissecteurs

Bien que les dissecteurs offrent un moyen rapide d'analyser des parties d'un paquet de données dans Wireshark, ils doivent suivre certains protocoles pour fonctionner efficacement. Ces protocoles comprennent les éléments suivants :

puedes descargar kodi en chromecast
  • Chaque dissecteur que vous créez doit être enregistré pour gérer un type défini de charge utile à partir d'un protocole différent. Pour terminer cet enregistrement, vous devez attribuer un objet 'Proto' à votre dissecteur, que vous verrez ci-dessous.
  • Lorsque vous appelez un dissecteur via Wireshark, il reçoit trois choses de l'application :
    • Objet TVB – Un tampon TVB du paquet de données.
    • Objet TreeItem – Une racine d'arbre qui représente un nœud unique dans un arbre de données.
    • Objet Pinfo - Un enregistrement d'informations sur les paquets.
  • Vous ne pouvez appeler un dissecteur que si votre paquet de données correspond au DissectorTable que vous avez défini sur votre objet 'Proto'.
    • Vous pouvez contourner cette exigence en forçant l'utilisation d'un dissecteur via la fonction 'Decode As'. Mais même dans ce cas, vous ne pouvez forcer le dissecteur que si le DissectorTable que vous avez défini sur votre objet 'Proto' est du type correct.

Configuration de votre dissecteur à l'aide de LUA

Comme Wireshark est à la fois écrit et utilise le langage de programmation C, la plupart des dissecteurs sont écrits de la même manière en C. Cependant, vous pouvez utiliser Lua. Ce langage de script est plus simple que le C et donc plus accessible aux débutants en codage ou à ceux qui veulent simplement créer un dissecteur en utilisant un langage plus léger.

Bien que votre code soit plus simple, le dissecteur que vous obtenez en utilisant Lua est généralement plus lent que celui que vous créeriez en utilisant C. Néanmoins, voici les étapes à suivre si vous souhaitez créer un dissecteur Wireshark en utilisant Lua.

Étape 1 - Configurer Lua dans Wireshark

Vous devrez configurer Lua si vous ne l'avez pas utilisé dans Wireshark auparavant :

  1. Cliquez sur 'Aide', suivi de 'À propos de Wireshark'.
  2. Cliquez sur 'Dossiers'.
  3. Choisissez l'une des options suivantes pour créer un script Lua actif :
    • Plugins Lua mondiaux
    • Plugins Lua personnels
    • Personnel

Une fois activé, votre script sera prêt à chaque démarrage de Wireshark. Chaque fois que vous apportez une modification à ce script, vous devez soit redémarrer Wireshark pour enregistrer la modification, soit appuyer sur 'Ctrl + Maj + L' pour recharger tous vos scripts Lua afin d'activer vos modifications.

¿Cómo convierto un archivo WAV a MP3?

Étape 2 - Les étapes de base pour créer votre dissecteur

Si vous connaissez déjà Lua, vous pouvez utiliser les étapes suivantes pour créer votre propre script dissecteur qui fonctionnera dans Wireshark :

  • Déclarez le protocole de votre dissecteur, ce qui vous oblige à définir à la fois un nom long à utiliser dans l'arborescence des protocoles et un nom court qui sert de nom de filtre d'affichage du dissecteur.
    • Créez les trois champs suivants, avec leurs types appropriés :
    • Question – Affiche le type de question.
    • Réponse – Affiche le type de réponse.
  • MessageType – Indique si votre paquet demande une question ou une réponse.
  • Enregistrez vos champs afin que Wireshark sache comment les afficher. Sans champs enregistrés, vous recevrez un message 'Erreur Lua', vous indiquant généralement que votre Tree Item ProtoField n'est pas valide.
  • Créez une fonction de dissection qui inclut le Pinfo mentionné précédemment (contenant des données sur votre paquet) et l'élément d'arbre (créant l'arbre que vous ajouterez à un sous-arbre). Vous devez également créer un 'tampon', qui se trouve au-dessus de votre TCP.
  • Spécifiez à la fois le protocole et le port pour lesquels Wireshark doit utiliser le dissecteur. Par exemple, vous pouvez définir le protocole sur 'TCP' et le numéro de port sur celui que vous souhaitez utiliser.

Étape 3 - Ajoutez votre dissecteur à Wireshark

En ce moment, votre dissecteur est comme une ampoule sans électricité. Il existe, mais il ne vous est d'aucune utilité tant que vous ne pouvez pas y faire passer de l'énergie. En d'autres termes, votre dissecteur n'est pas encore ajouté à Wireshark, vous devez donc l'ajouter manuellement pour le faire fonctionner en suivant ces étapes :

  1. Cliquez sur 'Aide' et dirigez-vous vers le menu 'À propos de Wireshark'.
  2. Sélectionnez l'onglet 'Dossier' pour trouver une liste de chemins pour votre fichier Lua.
  3. Choisissez 'Plugins Lua personnels'. Créez un répertoire si nécessaire.
  4. Copiez et collez le fichier Lua que vous avez créé dans le répertoire 'Personal Lua Plugins'. Rechargez Wireshark pour allumer le dissecteur.

C'est une bonne idée d'effectuer un test sur votre nouveau dissecteur en ouvrant certains des paquets que vous avez capturés. Wireshark devrait fournir un message indiquant le nom long que vous avez choisi pour votre dissecteur, ainsi que des informations sur le type de message (question ou réponse) et le résultat de votre vérification.

Quelques exemples de code

Si vous n'avez jamais créé de dissecteur auparavant (ou si vous êtes nouveau sur Lua), Wireshark propose un exemple pratique de dissecteur à essayer :

local p_multi = Proto("multi", "MultiProto");
local vs_protos = {
    [2] = "mtp2",
    [3] = "mtp3",
    [4] = "alcap",
    [5] = "h248",
    [6] = "ranap",
    [7] = "rnsap",
    [8] = "nbap"
}
local f_proto = ProtoField.uint8("multi.protocol", "Protocol", base.DEC, vs_protos)
local f_dir = ProtoField.uint8("multi.direction", "Direction", base.DEC, { [1] = "incoming", [0] = "outgoing"})
local f_text = ProtoField.string("multi.text", "Text")
p_multi.fields = { f_proto, f_dir, f_text }
local data_dis = Dissector.get("data")
local protos = {
    [2] = Dissector.get("mtp2"),
    [3] = Dissector.get("mtp3"),
    [4] = Dissector.get("alcap"),
    [5] = Dissector.get("h248"),
    [6] = Dissector.get("ranap"),
    [7] = Dissector.get("rnsap"),
    [8] = Dissector.get("nbap"),
    [9] = Dissector.get("rrc"),
    [10] = DissectorTable.get("sctp.ppi"):get_dissector(3), -- m3ua
    [11] = DissectorTable.get("ip.proto"):get_dissector(132), -- sctp
}
function p_multi.dissector(buf, pkt, tree)
    local subtree = tree:add(p_multi, buf(0,2))
    subtree:add(f_proto, buf(0,1))
    subtree:add(f_dir, buf(1,1))
    local proto_id = buf(0,1):uint()
    local dissector = protos[proto_id]
    if dissector ~= nil then
        -- Dissector was found, invoke subdissector with a new Tvb,
        -- created from the current buffer (skipping first two bytes).
        dissector:call(buf(2):tvb(), pkt, tree)
    elseif proto_id < 2 then
        subtree:add(f_text, buf(2))
        -- pkt.cols.info:set(buf(2, buf:len() - 3):string())
    else
        -- fallback dissector that just shows the raw data.
        data_dis:call(buf(2):tvb(), pkt, tree)
    end
end
local wtap_encap_table = DissectorTable.get("wtap_encap")
local udp_encap_table = DissectorTable.get("udp.port")
wtap_encap_table:add(wtap.USER15, p_multi)
wtap_encap_table:add(wtap.USER12, p_multi)
udp_encap_table:add(7555, p_multi)

Postdissecteurs et dissecteurs chaînés

Vous voudrez peut-être approfondir un peu l'utilisation de votre dissecteur une fois que vous aurez maîtrisé leur création en Lua. Wireshark propose deux types supplémentaires de dissecteurs - les postdissecteurs et les dissecteurs enchaînés - qui offrent plus de fonctionnalités.

Un postdissecteur ressemble beaucoup à une vérification finale de tous les dissecteurs que vous avez exécutés pour un paquet. Vous l'enregistrez pour être averti une fois que Wireshark a appelé tous les autres dissecteurs que vous souhaitez utiliser, et vous pouvez l'utiliser pour filtrer les colonnes 'Protocole' et 'Info'. Cette fonctionnalité est particulièrement utile si vous souhaitez filtrer plusieurs paquets dans une session où vous avez eu un long écart entre les ensembles de données et que vous ne pouvez pas rappeler chacun individuellement.

Le chaînage des dissecteurs remplit une fonction similaire (au moins en termes de filtrage à travers les dissecteurs précédemment utilisés) en vous donnant accès aux données d'un seul dissecteur. Le principal avantage ici est que le dissecteur chaîné n'a pas à parcourir à nouveau chaque paquet, ce qui vous donne un résultat sans vous obliger à attendre que le dissecteur d'origine s'exécute à nouveau.

como multiplicar en hojas de google

Disséquer en Lua

Étant donné que Wireshark offre déjà la possibilité de créer des dissecteurs en C (son langage naturel), vous ne verrez peut-être pas la nécessité de les créer également en Lua. Pourtant, ceux qui ne sont pas à l'aise avec C, ainsi que ceux qui maîtrisent déjà Lua, peuvent trouver que le script léger de Lua facilite la création de leurs dissecteurs. Certes, vous devez échanger un temps de chargement plus long lorsque vous exécutez le processus par rapport aux dissecteurs basés sur C, mais il est utile d'avoir l'option malgré tout.

Cela dit, nous voulons vous entendre. À quelle fréquence utilisez-vous des dissecteurs dans Wireshark ? Avez-vous déjà essayé de les créer en C, et quels avantages pensez-vous que la création de dissecteurs en Lua apporte ? Faites-nous savoir dans la section commentaires ci-dessous.

Des Articles Intéressants

Choix De L'Éditeur

Comment changer la langue d'affichage de Firefox à la volée
Comment changer la langue d'affichage de Firefox à la volée
Apprenez à basculer rapidement entre les langues d'affichage de Firefox en un seul clic.
Puis-je jouer à des jeux PS3 sur ma PS4, est-ce possible ? [Toutes les réponses]
Puis-je jouer à des jeux PS3 sur ma PS4, est-ce possible ? [Toutes les réponses]
Impossible de désactiver les annonces automatiques par programmation sur la page, alors nous y sommes !
Comment diviser l'écran sur le bureau à distance
Comment diviser l'écran sur le bureau à distance
Parfois, avoir un seul écran lors de l'accès à distance à un autre ordinateur n'est tout simplement pas suffisant pour faire avancer les choses. Si vous rencontrez ce problème, il existe un moyen de diviser l'écran sur un poste de travail distant afin que vous puissiez voir les deux
Comment désactiver la fenêtre contextuelle 'Google recommande'
Comment désactiver la fenêtre contextuelle 'Google recommande'
Aujourd'hui, l'ouverture d'un site Web s'accompagne souvent d'une myriade de fenêtres contextuelles, de notifications et de widgets indésirables extrêmement gênants. Il en va de même pour les sites Web appartenant à Google qui recommandent souvent à l'utilisateur de passer à Google Chrome lorsqu'il visite
Comment vider le cache sur une Xbox One
Comment vider le cache sur une Xbox One
En ce qui concerne essentiellement tout appareil électronique qui est même lié de manière tangentielle à un ordinateur, vous devrez parfois nettoyer les choses. Il en va de même si vous êtes propriétaire d'une Xbox One. Que voulons-nous dire ? Votre dur
Modifier l'espace de stockage dans le pool de stockage dans Windows 10
Modifier l'espace de stockage dans le pool de stockage dans Windows 10
Vous pouvez modifier un espace de stockage dans un pool de stockage dans Windows 10. Les espaces de stockage aident à protéger vos données contre les pannes de disque et à étendre le stockage au fil du temps.
Date de sortie du Samsung Galaxy S10 : de nouvelles images dévoilées de l'appareil final
Date de sortie du Samsung Galaxy S10 : de nouvelles images dévoilées de l'appareil final
Le Samsung Galaxy S10 est presque arrivé. Bien que les détails sur le prochain produit phare de Samsung restent rares, d'autant plus que Samsung est plus intéressé à pousser son prochain téléphone pliable Galaxy X à la place, de nouvelles informations glissent constamment. Le dernier