Principal Altres Com utilitzar Lua Dissector a Wireshark

Com utilitzar Lua Dissector a Wireshark



Com una de les millors eines de captura de paquets de xarxa del món, Wireshark us permet obtenir paquets de dades específics perquè pugueu analitzar-los tant fora de línia com en temps real. Penseu en l'aplicació com una manera d'examinar de prop les dades que flueixen per la vostra xarxa, cosa que us permet detectar problemes i irregularitats.

  Com utilitzar Lua Dissector a Wireshark

Podeu utilitzar dissectors si voleu analitzar una part específica de les dades d'un paquet. Com el seu nom indica, aquest procés 'dissecciona' el codi, permetent-te retallar certs aspectes que necessiten la teva atenció. Aquest tutorial explica com crear i utilitzar dissectors a Wireshark utilitzant el llenguatge de scripting Lua.

Abans de començar: el que heu de saber sobre els dissectors

Tot i que els dissectors ofereixen una manera ràpida d'analitzar porcions d'un paquet de dades a Wireshark, han de seguir alguns protocols per funcionar de manera eficaç. Aquests protocols inclouen els següents:

  • Cada dissector que creeu s'ha de registrar per gestionar un tipus definit de càrrega útil des d'un protocol diferent. Per completar aquest registre, heu d'assignar un objecte 'Proto' al vostre dissector, que veureu a continuació.
  • Quan truqueu a un dissector mitjançant Wireshark, rep tres coses de l'aplicació:
    • Objecte TVB: un buffer TVB del paquet de dades.
    • Objecte TreeItem: arrel d'arbre que representa un sol node en un arbre de dades.
    • Objecte Pinfo: un registre d'informació de paquets.
  • Només podeu trucar a un dissector si el vostre paquet de dades coincideix amb la DissectorTable que heu establert al vostre objecte 'Proto'.
    • Podeu evitar aquest requisit forçant l'ús d'un dissector mitjançant la funció 'Descodificar com'. Però fins i tot llavors, només podeu forçar el dissector si el DissectorTable que heu definit al vostre objecte 'Proto' és del tipus correcte.

Configuració del vostre Dissector mitjançant LUA

Com que Wireshark està escrit i utilitza el llenguatge de programació C, la majoria dels dissectors s'escriuen de manera similar en C. Tanmateix, potser voldreu utilitzar Lua. Aquest llenguatge de script és més senzill que C i, per tant, més accessible per als nouvinguts de la codificació o aquells que simplement volen crear un dissector amb un llenguatge més lleuger.

Tot i que el vostre codi serà més senzill, el dissector que obteniu quan feu servir Lua sol ser més lent que el que crearíeu amb C. No obstant això, aquests són els passos a seguir si voleu crear un dissector Wireshark amb Lua.

Pas 1: configureu Lua a Wireshark

Haureu de configurar Lua si no l'heu utilitzat abans a Wireshark:

  1. Feu clic a 'Ajuda' seguit de 'Quant a Wireshark'.
  2. Feu clic a 'Carpetes'.
  3. Trieu una de les opcions següents per crear un script Lua actiu:
    • Complements globals de Lua
    • Connectors personals de Lua
    • Personal

Un cop activat, el vostre script estarà a punt sempre que inicieu Wireshark. Cada vegada que feu un canvi a aquest script, heu de reiniciar Wireshark per registrar el canvi o premeu 'Ctrl + Maj + L' per tornar a carregar tots els vostres scripts de Lua per activar els vostres canvis.

Pas 2: els passos bàsics per crear el vostre dissector

Si ja esteu familiaritzat amb Lua, podeu seguir els passos següents per crear el vostre propi script dissector que funcionarà a Wireshark:

instal·leu Chrome OS al portàtil antic
  • Declareu el protocol per al vostre dissector, que requereix que establiu tant un nom llarg per utilitzar-lo a l'arbre de protocols com un nom curt que serveixi de nom de filtre de visualització del dissector.
    • Creeu els tres camps següents, amb els seus tipus adequats:
    • Pregunta: mostra el tipus de pregunta.
    • Resposta: mostra el tipus de resposta.
  • MessageType: demostra si el vostre paquet sol·licita una pregunta o una resposta.
  • Registreu els vostres camps perquè Wireshark sàpiga com mostrar-los. Sense camps registrats, rebreu un missatge d''Error Lua', que normalment us indica que el vostre ProtoField d'element d'arbre no és vàlid.
  • Creeu una funció de dissecció que inclogui el Pinfo esmentat anteriorment (que conté dades sobre el vostre paquet) i l'element de l'arbre (creant l'arbre que afegireu a un subarbre). També heu de crear un 'buffer', que es troba a la part superior del vostre TCP.
  • Especifiqueu tant el protocol com el port per als quals Wireshark ha d'utilitzar el dissector. Per exemple, podeu configurar el protocol a 'TCP' i el número de port al que vulgueu utilitzar.

Pas 3: afegiu el vostre Dissector a Wireshark

Ara mateix, el teu dissector és com una bombeta sense electricitat. Existeix, però no us serveix de res fins que no pugueu fer-hi passar una mica de poder. En altres paraules, el vostre dissector encara no s'ha afegit a Wireshark, de manera que l'heu d'afegir manualment per fer-lo funcionar mitjançant aquests passos:

per què les noies publiquen fruites a Snapchat?
  1. Feu clic a 'Ajuda' i aneu al menú 'Quant a Wireshark'.
  2. Seleccioneu la pestanya 'Carpeta' per trobar una llista de camins per al vostre fitxer Lua.
  3. Trieu 'Connectors Lua personals'. Creeu un directori si cal.
  4. Copieu i enganxeu el fitxer Lua que heu creat al directori 'Connectors Lua personals'. Torneu a carregar Wireshark per encendre el dissector.

És una bona idea fer una prova al vostre nou dissector obrint alguns dels paquets que heu capturat. Wireshark hauria de lliurar un missatge que mostri el nom llarg que heu triat per al vostre dissector, juntament amb informació sobre el tipus de missatge (pregunta o resposta) i el resultat de la vostra comprovació.

Alguns codis de mostra

Si no heu creat un dissector abans (o sou nou a Lua), Wireshark ofereix un exemple de dissector pràctic perquè el proveu:

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)

Postdissectors i Dissectors encadenats

És possible que vulgueu aprofundir una mica més en l'ús del vostre dissector un cop hàgiu dominat la creació d'ells a Lua. Wireshark ofereix dos tipus addicionals de dissectors: postdissectors i dissectors encadenats, que ofereixen més funcionalitat.

Un postdissector és molt semblant a una comprovació final de tots els dissectors que heu executat per a un paquet. El registreu per rebre una notificació un cop Wireshark hagi trucat a tots els altres dissectors que vulgueu que utilitzi, i podeu utilitzar-lo per filtrar les columnes 'Protocol' i 'Informació'. Aquesta funció és especialment útil si voleu filtrar diversos paquets en una sessió en què heu tingut un llarg espai entre conjunts de dades i no podeu recordar-ne cadascun individualment.

Encadenar els dissectors compleix una funció similar (almenys pel que fa al filtratge dels dissectors utilitzats anteriorment) ja que us permet accedir a les dades d'un únic dissector. L'avantatge clau aquí és que el dissector encadenat no ha de tornar a passar per tots els paquets, donant-vos un resultat sense obligar-vos a esperar que el dissector original torni a funcionar.

Disseccionar en Lua

Tenint en compte que Wireshark ja ofereix la possibilitat de crear dissectors en C (el seu llenguatge natural), potser no veieu la necessitat de crear-los també en Lua. Tot i això, aquells que no se senten còmodes amb C, així com els que ja han dominat Lua, poden trobar que el script lleuger de Lua facilita la creació dels seus dissectors. Per descomptat, heu de compensar un temps de càrrega més llarg quan executeu el procés en comparació amb els dissectors basats en C, però és útil tenir l'opció independentment.

Dit això, volem saber de vostè. Amb quina freqüència utilitzeu els dissectors a Wireshark? Has provat de crear-los en C abans i quins avantatges creus que ofereix fer dissectors a Lua? Feu-nos-ho saber a la secció de comentaris a continuació.

Articles D'Interès

L'Elecció De L'Editor

Fallout4: estableix una resolució de pantalla no estàndard
Fallout4: estableix una resolució de pantalla no estàndard
Si la vostra resolució de visualització nativa no apareix a les preferències de Fallout 4, aquí us expliquem com podeu establir-la.
Arch Linux per a WSL ara [no oficialment] disponible a Microsoft Store
Arch Linux per a WSL ara [no oficialment] disponible a Microsoft Store
Si feu servir la funció WSL a Windows 10 (anteriorment coneguda com a Bash On Ubuntu), segur que sabeu que podeu instal·lar i executar diverses distribucions de Linux des de Microsoft Store. Kali Linux és una altra distribució que podeu instal·lar a partir d'avui.
Com utilitzar Internet al vostre telèfon sense un pla de dades
Com utilitzar Internet al vostre telèfon sense un pla de dades
Reps cada vegada més factures de telèfon cada mes? Trobeu que els vostres hàbits de transmissió de Netflix són massa cars? Heu de saber que no cal que confieu exclusivament en el vostre pla de dades
Exclou les imatges de OneDrive de fotos al Windows 10
Exclou les imatges de OneDrive de fotos al Windows 10
De manera predeterminada, Fotos mostra les imatges emmagatzemades localment juntament amb les imatges que guardeu a OneDrive. A continuació s’explica com excloure les vostres imatges de OneDrive de fotos a Windows 10.
Com fer una porta secreta a Minecraft
Com fer una porta secreta a Minecraft
Les portes secretes són la manera més eficaç de mantenir els teus tresors allunyats d'altres jugadors de Minecraft. No estem parlant d'una porta de terra que s'hauria de trencar i reconstruir cada vegada que vulgueu entrar a la vostra habitació secreta. Acabat
Els millors programes LGBTQ a Netflix ara mateix (març de 2024)
Els millors programes LGBTQ a Netflix ara mateix (març de 2024)
Aquests són alguns dels millors programes de televisió de lesbianes, bi, trans i gais del servei de streaming de Netflix, com ara 'Heartstopper' i 'Young Royals'.
Com fer una torxa a Minecraft
Com fer una torxa a Minecraft
Una torxa és una font de llum valuosa a Minecraft. A continuació s'explica com crear una torxa a Minecraft amb carbó vegetal i pals (i com trobar aquests articles).