Principale Altro Come utilizzare Lua Dissettore in Wireshark

Come utilizzare Lua Dissettore in Wireshark



Essendo uno dei migliori strumenti di acquisizione di pacchetti di rete al mondo, Wireshark ti consente di ottenere pacchetti di dati specifici in modo da poterli analizzare sia offline che in tempo reale. Pensa all'app come a un modo per esaminare da vicino i dati che fluiscono attraverso la tua rete, permettendoti di rilevare problemi e irregolarità.

  Come utilizzare Lua Dissettore in Wireshark

È possibile utilizzare i dissettori se si desidera analizzare una parte specifica dei dati di un pacchetto. Come suggerisce il nome, questo processo 'seziona' il codice, permettendoti di eliminare alcuni aspetti che richiedono la tua attenzione. Questo tutorial spiega come creare e utilizzare i dissettori in Wireshark utilizzando il linguaggio di scripting Lua.

come installare apk su amazon fire stick?

Prima di iniziare: cosa devi sapere sui dissettori

Sebbene i dissettori offrano un modo rapido per analizzare parti di un pacchetto di dati in Wireshark, devono seguire alcuni protocolli per funzionare in modo efficace. Questi protocolli includono quanto segue:

  • Ogni dissettore che crei deve essere registrato per gestire un determinato tipo di payload da un protocollo diverso. Per completare questa registrazione, devi assegnare un oggetto 'Proto' al tuo dissettore, che vedrai di seguito.
  • Quando chiami un dissettore tramite Wireshark, riceve tre cose dall'app:
    • Oggetto TVB: un buffer TVB dal pacchetto di dati.
    • Oggetto TreeItem: una radice dell'albero che rappresenta un singolo nodo in un albero di dati.
    • Oggetto Pinfo: un record di informazioni sul pacchetto.
  • Puoi chiamare un dissettore solo se il tuo pacchetto di dati corrisponde alla DissectorTable che hai impostato sull'oggetto 'Proto'.
    • È possibile aggirare questo requisito forzando l'uso di un dissettore tramite la funzione 'Decodifica come'. Ma anche in questo caso, puoi forzare il dissettore solo se il DissectorTable che hai impostato sul tuo oggetto 'Proto' è del tipo corretto.

Configurazione del dissettore tramite LUA

Poiché Wireshark è scritto e utilizza il linguaggio di programmazione C, la maggior parte dei dissettori sono scritti in modo simile in C. Tuttavia, potresti voler utilizzare Lua. Questo linguaggio di scripting è più semplice del C e quindi più accessibile ai neofiti della programmazione o a coloro che vogliono semplicemente creare un dissettore utilizzando un linguaggio più leggero.

Sebbene il tuo codice sia più semplice, il dissettore che ottieni quando usi Lua è solitamente più lento di quello che creeresti usando C. Tuttavia, questi sono i passaggi da seguire se vuoi creare un dissettore Wireshark usando Lua.

Passaggio 1: configurare Lua in Wireshark

Dovrai configurare Lua se non l'hai mai usato in Wireshark prima:

  1. Fai clic su 'Guida', seguito da 'Informazioni su Wireshark'.
  2. Fai clic su 'Cartelle'.
  3. Scegli una delle seguenti opzioni per creare uno script Lua attivo:
    • Plugin Lua globali
    • Plugin Lua personali
    • Personale

Una volta attivato, il tuo script sarà pronto ogni volta che avvii Wireshark. Ogni volta che apporti una modifica a quello script, devi riavviare Wireshark per registrare la modifica o premere 'Ctrl + Maiusc + L' per ricaricare tutti i tuoi script Lua per rendere attive le modifiche.

Passaggio 2: i passaggi di base per creare il tuo dissettore

Se hai già familiarità con Lua, puoi utilizzare i seguenti passaggi per creare il tuo script di dissettore che funzionerà in Wireshark:

  • Dichiara il protocollo per il tuo dissettore, che richiede di impostare sia un nome lungo da utilizzare nella struttura del protocollo sia un nome breve che funge da nome del filtro di visualizzazione del dissettore.
    • Crea i seguenti tre campi, con i tipi appropriati:
    • Domanda: mostra il tipo di domanda.
    • Risposta: mostra il tipo di risposta.
  • MessageType – Indica se il tuo pacchetto richiede una domanda o una risposta.
  • Registra i tuoi campi in modo che Wireshark sappia come visualizzarli. Senza campi registrati, riceverai un messaggio 'Lua Error', che di solito ti dice che il tuo Tree Item ProtoField non è valido.
  • Crea una funzione di dissezione che includa il già citato Pinfo (contenente i dati sul tuo pacchetto) e Tree Item (creando l'albero che aggiungerai a un sottoalbero). Devi anche creare un 'buffer', che si trova sopra il tuo TCP.
  • Specifica sia il protocollo che la porta per cui Wireshark deve utilizzare il dissettore. Ad esempio, puoi impostare il protocollo su 'TCP' e il numero di porta su quello che desideri utilizzare.

Passaggio 3: aggiungi il tuo dissettore a Wireshark

In questo momento, il tuo dissettore è come una lampadina senza elettricità. Esiste, ma non ti serve finché non riesci a far passare un po' di potere attraverso di essa. In altre parole, il tuo dissettore non è ancora stato aggiunto a Wireshark, quindi devi aggiungerlo manualmente per farlo funzionare seguendo questi passaggi:

  1. Fai clic su 'Aiuto' e vai al menu 'Informazioni su Wireshark'.
  2. Seleziona la scheda 'Cartella' per trovare un elenco di percorsi per il tuo file Lua.
  3. Scegli 'Plugin Lua personali'. Creare una directory se necessario.
  4. Copia e incolla il file Lua che hai creato nella directory 'Personal Lua Plugins'. Ricarica Wireshark per attivare il dissettore.

È una buona idea eseguire un test sul tuo nuovo dissettore aprendo alcuni dei pacchetti che hai catturato. Wireshark dovrebbe consegnare un messaggio che mostra il nome lungo che hai scelto per il tuo dissettore, insieme alle informazioni sul tipo di messaggio (domanda o risposta) e il risultato del tuo controllo.

Alcuni esempi di codice

Se non hai mai creato un dissettore prima (o sei nuovo su Lua), Wireshark offre un pratico dissettore di esempio da provare:

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)

Postdissettore e Dissettore concatenato

Potresti voler approfondire un po' di più il tuo utilizzo del dissettore una volta che avrai imparato a crearli in Lua. Wireshark offre due ulteriori tipi di dissettori - postdissettori e dissettori concatenati - che offrono più funzionalità.

Un postdissector è molto simile a un controllo finale di tutti i dissector che hai eseguito per un pacchetto. Lo registri per ricevere una notifica una volta che Wireshark ha chiamato ogni altro dissettore che vuoi che utilizzi e puoi usarlo per filtrare le colonne 'Protocollo' e 'Informazioni'. Questa funzione è particolarmente utile se desideri filtrare più pacchetti in una sessione in cui hai avuto un lungo intervallo tra i set di dati e non riesci a richiamarli singolarmente.

Il concatenamento dei dissettori svolge una funzione simile (almeno in termini di filtraggio attraverso i dissettori utilizzati in precedenza) dando accesso ai dati di un singolo dissettore. Il vantaggio chiave qui è che il dissettore incatenato non deve eseguire nuovamente ogni pacchetto, dandoti un risultato senza costringerti ad aspettare che il dissettore originale venga eseguito di nuovo.

Sezionare in Lua

Dato che Wireshark offre già la possibilità di creare dissettori in C (il suo linguaggio naturale), potresti non vedere la necessità di crearli anche in Lua. Tuttavia, coloro che non si sentono a proprio agio con C, così come coloro che hanno già imparato Lua, potrebbero scoprire che lo scripting leggero di Lua rende più facile creare i propri dissettori. Certo, devi sacrificare un tempo di caricamento più lungo quando esegui il processo rispetto ai dissettori basati su C, ma è utile avere l'opzione a prescindere.

Detto questo, vogliamo sentire la tua opinione. Quanto spesso usi i dissettori in Wireshark? Hai già provato a crearli in C e quali vantaggi pensi che la creazione di dissettori in Lua offra? Fateci sapere nella sezione commenti qui sotto.

Articoli Interessanti

Scelta Del Redattore

Cos'è la barra multifunzione in Excel?
Cos'è la barra multifunzione in Excel?
Ecco una guida passo passo su come personalizzare la barra multifunzione in Microsoft Excel e altri programmi di Microsoft Office.
Le 12 migliori app gratuite per telefonare via Internet del 2024
Le 12 migliori app gratuite per telefonare via Internet del 2024
Effettua telefonate via Internet gratuite con queste app. È possibile effettuare chiamate online gratuite con le app Google e altre app di telefonia Internet. Alcuni ti danno addirittura un vero numero di telefono.
Rilasciato Edge Stable 86.0.622.38, ecco le modifiche
Rilasciato Edge Stable 86.0.622.38, ecco le modifiche
Microsoft ha rilasciato oggi Edge 86.0.622.38 nel ramo stabile, aumentando la versione principale del browser a Edge 86. Come ci si può aspettare, viene fornito con un enorme elenco di nuove funzionalità che non erano precedentemente disponibili nelle versioni stabili dell'app. Novità di Microsoft Edge 86.0.622.38 Aggiornamenti delle funzionalità stabili Modalità Internet Explorer: Let
Come aggiungere o rimuovere l'icona della barra delle applicazioni Bluetooth in Windows 10
Come aggiungere o rimuovere l'icona della barra delle applicazioni Bluetooth in Windows 10
In questo articolo, esamineremo tre diversi metodi per aggiungere o rimuovere l'icona Bluetooth dalla barra delle applicazioni in Windows 10, incluse Impostazioni e un tweak.
Microsoft esamina l'utilizzo elevato della CPU KB4512941 di Windows 10 da SearchUI.exe
Microsoft esamina l'utilizzo elevato della CPU KB4512941 di Windows 10 da SearchUI.exe
Venerdì scorso, Microsoft ha rilasciato un aggiornamento cumulativo facoltativo per gli utenti di Windows 10 versione 1903 `` Aggiornamento maggio 2019 '', che è la build 18362.329. Dopo aver installato l'aggiornamento, molti utenti hanno segnalato un utilizzo elevato della CPU da parte di Cortana e SearchUI.exe. Microsoft ha finalmente confermato il problema e sta per fornire una soluzione
Scarica l'icona della cartella blu per Windows 10
Scarica l'icona della cartella blu per Windows 10
Icona blu della cartella per Windows 10. L'icona blu per le cartelle in Windows 10. Vedere il seguente articolo per riferimento: Modificare le icone delle cartelle di Windows 10 con il file * .ico. Autore: Winaero. Scarica 'Icona cartella blu per Windows 10' Dimensioni: 5,86 Kb PubblicitàPCRiparazione: risolvi i problemi di Windows. Tutti loro. Link per il download: fare clic qui per scaricare il file
Come disattivare il touch screen su un Chromebook
Come disattivare il touch screen su un Chromebook
I Chromebook sono dispositivi eccezionali, se non hai bisogno di un laptop in grado di gestire programmi impegnativi. Se ci sei dentro per l'esperienza del browser, ottenere un Chromebook è un'idea brillante. Tuttavia, alcune funzionalità possono diventare a