Principal Alte Cum să utilizați Lua Dissector în Wireshark

Cum să utilizați Lua Dissector în Wireshark



Fiind unul dintre cele mai bune instrumente de captare a pachetelor de rețea din lume, Wireshark vă permite să obțineți anumite pachete de date, astfel încât să le puteți analiza atât offline, cât și în timp real. Gândiți-vă la aplicație ca la o modalitate de a examina îndeaproape datele care circulă prin rețeaua dvs., permițându-vă să detectați probleme și nereguli.

  Cum se utilizează Lua Dissector în Wireshark

Puteți utiliza disectoarele dacă doriți să analizați o anumită parte a datelor unui pachet. După cum sugerează și numele, acest proces „disectează” codul, permițându-vă să decupați anumite aspecte care necesită atenția dvs. Acest tutorial explică cum să creați și să utilizați disectore în Wireshark folosind limbajul de scripting Lua.

cum se adaugă fonturi pe Google Docs

Înainte de a începe – Ce trebuie să știți despre disectori

Deși disectorii oferă o modalitate rapidă de a analiza porțiuni ale unui pachet de date în Wireshark, ei trebuie să urmeze unele protocoale pentru a funcționa eficient. Aceste protocoale includ următoarele:

  • Fiecare disector pe care îl creați trebuie să fie înregistrat pentru a gestiona un anumit tip de sarcină utilă dintr-un protocol diferit. Pentru a finaliza această înregistrare, trebuie să atribuiți un obiect „Proto” disectorului dvs., pe care îl veți vedea mai jos.
  • Când apelați un disector prin Wireshark, acesta primește trei lucruri de la aplicație:
    • Obiect TVB – Un buffer TVB din pachetul de date.
    • TreeItem Object – O rădăcină de arbore care reprezintă un singur nod într-un arbore de date.
    • Obiect Pinfo – O înregistrare de informații de pachet.
  • Puteți apela un disector numai dacă pachetul dvs. de date se potrivește cu DissectorTable pe care l-ați setat pentru obiectul „Proto”.
    • Puteți rezolva această cerință forțând utilizarea unui disector prin intermediul funcției „Decodare ca”. Dar chiar și atunci, puteți forța disectorul numai dacă DisectorTable pe care l-ați setat pentru obiectul „Proto” este de tipul corect.

Configurarea disectorului folosind LUA

Deoarece Wireshark este scris și folosește limbajul de programare C, majoritatea disectorilor sunt scrise în mod similar în C. Cu toate acestea, poate doriți să utilizați Lua. Acest limbaj de scripting este mai simplu decât C și, prin urmare, mai accesibil noilor veniți în codificare sau celor care doresc pur și simplu să creeze un disector folosind un limbaj mai ușor.

Deși codul dvs. va fi mai simplu, disectorul pe care îl obțineți când utilizați Lua este de obicei mai lent decât cel pe care l-ați crea folosind C. Cu toate acestea, aceștia sunt pașii de urmat dacă doriți să creați un disector Wireshark folosind Lua.

Pasul 1 - Configurați Lua în Wireshark

Va trebui să configurați Lua dacă nu l-ați folosit înainte în Wireshark:

adăugați aplicații la hisense smart tv
  1. Faceți clic pe „Ajutor”, urmat de „Despre Wireshark”.
  2. Faceți clic pe „Foldere”.
  3. Alegeți una dintre următoarele pentru a crea un script Lua activ:
    • Pluginuri Lua globale
    • Pluginuri personale Lua
    • Personal

Odată activat, scriptul va fi gata de fiecare dată când porniți Wireshark. De fiecare dată când faceți o modificare la acel script, fie trebuie să reporniți Wireshark pentru a înregistra modificarea, fie să apăsați „Ctrl + Shift + L” pentru a reîncărca toate scripturile Lua pentru a activa modificările.

Pasul 2 – Pașii de bază pentru crearea disectorului

Dacă sunteți deja familiarizat cu Lua, puteți utiliza următorii pași pentru a vă crea propriul script disector care va funcționa în Wireshark:

  • Declarați protocolul pentru disector, care necesită să setați atât un nume lung pentru utilizare în arborele de protocol, cât și un nume scurt care servește ca nume de filtru de afișare al disectorului.
    • Creați următoarele trei câmpuri, cu tipurile corespunzătoare:
    • Întrebare – Afișează tipul de întrebare.
    • Răspuns – Afișează tipul de răspuns.
  • MessageType – Demonstrează dacă pachetul dvs. solicită o întrebare sau un răspuns.
  • Înregistrați-vă câmpurile, astfel încât Wireshark să știe cum să le afișeze. Fără câmpuri înregistrate, veți primi un mesaj „Eroare Lua”, care vă va spune, de obicei, că ProtoField-ul articolului arborelui este invalid.
  • Creați o funcție de disecție care include Pinfo-ul menționat anterior (conținând date despre pachetul dvs.) și Tree Item (creând arborele pe care îl veți adăuga la un subarboresc). De asemenea, trebuie să creați un „buffer”, care se află deasupra TCP-ului dvs.
  • Specificați atât protocolul, cât și portul pentru care Wireshark trebuie să folosească disectorul. De exemplu, puteți seta protocolul la „TCP” și numărul portului la oricare doriți să utilizați.

Pasul 3 - Adăugați disectorul la Wireshark

Chiar acum, disectorul tău este ca un bec fără electricitate. Ea există, dar nu-ți este de nici un folos până când nu poți folosi ceva putere prin el. Cu alte cuvinte, disectorul dvs. nu este încă adăugat la Wireshark, așa că trebuie să îl adăugați manual pentru a-l porni, utilizând acești pași:

  1. Faceți clic pe „Ajutor” și mergeți la meniul „Despre Wireshark”.
  2. Selectați fila „Folder” pentru a găsi o listă de căi pentru fișierul dvs. Lua.
  3. Alegeți „Pluginuri Lua personale”. Creați un director dacă este necesar.
  4. Copiați și inserați fișierul Lua pe care l-ați creat în directorul „Pluginuri Lua personale”. Reîncărcați Wireshark pentru a porni disectorul.

Este o idee bună să efectuați un test pe noul dvs. disector prin deschiderea unora dintre pachetele pe care le-ați capturat. Wireshark ar trebui să transmită un mesaj care să arate numele lung pe care l-ați ales pentru disector, împreună cu informații despre tipul mesajului (întrebare sau răspuns) și rezultatul verificării dvs.

Un cod exemplu

Dacă nu ați creat un disector înainte (sau sunteți nou în Lua), Wireshark oferă un exemplu de disector la îndemână pe care să-l încercați:

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)

Postdisectoare și Disectoare înlănțuite

Poate doriți să mergeți puțin mai în profunzime cu utilizarea disectorului după ce ați învățat să le creați în Lua. Wireshark oferă două tipuri suplimentare de disectoare – postdisectoare și disectoare înlănțuite – care oferă mai multe funcționalități.

Un postdisector seamănă mult cu o verificare finală a tuturor disectoarelor pe care le-ați rulat pentru un pachet. Îl înregistrați pentru a primi notificări odată ce Wireshark a sunat orice alt disector pe care doriți să-l folosească și îl puteți folosi pentru a filtra coloanele „Protocol” și „Informații”. Această caracteristică este utilă în special dacă doriți să filtrați mai multe pachete într-o sesiune în care ați avut un decalaj lung între seturile de date și nu le puteți aminti pe fiecare individual.

Înlănțuirea disectoarelor îndeplinește o funcție similară (cel puțin în ceea ce privește filtrarea prin disectoarele utilizate anterior), oferindu-vă acces la datele unui singur disector. Avantajul cheie aici este că disectorul înlănțuit nu trebuie să ruleze din nou fiecare pachet, oferindu-vă un rezultat fără a vă obliga să așteptați ca disectorul original să ruleze din nou.

Disecție în Lua

Având în vedere că Wireshark oferă deja capacitatea de a crea disectore în C (limbajul său natural), este posibil să nu vedeți nevoia să le creați și în Lua. Cu toate acestea, cei care nu se simt confortabil cu C, precum și cei care au stăpânit deja Lua, ar putea descoperi că scripting-ul ușor al Lua facilitează crearea disectorilor lor. Desigur, trebuie să compensați un timp de încărcare mai lung atunci când rulați procesul în comparație cu disectoarele bazate pe C, dar este util să aveți opțiunea indiferent.

Windows 10 reporniți meniul de pornire

Acestea fiind spuse, vrem să auzim de la tine. Cât de des folosiți disectoarele în Wireshark? Ați mai încercat să le creați în C și ce beneficii credeți că oferă disectorii în Lua? Anunțați-ne în secțiunea de comentarii de mai jos.

Articole Interesante

Alegerea Editorului

Cum se actualizează hărțile pe un dispozitiv Garmin
Cum se actualizează hărțile pe un dispozitiv Garmin
Garmin a devenit unul dintre liderii industriei GPS datorită caracteristicilor sale bogate și a selecției excelente a dispozitivelor. Cu toate acestea, drumurile pe care oamenii le folosesc Garmin se pot schimba în timp, la fel și diverse locuri de pe hartă. Pentru a obține cele mai bune
Microsoft închide Outlook.com Premium pentru noii abonați, îl combină cu Office 365
Microsoft închide Outlook.com Premium pentru noii abonați, îl combină cu Office 365
Microsoft nu mai oferă abonamente premium Outlook.com independente noilor abonați. Această abilitate este acum disponibilă numai pentru clienții Office 365 și nu pentru utilizatorii obișnuiți de Outlook.com. Microsoft a făcut următoarea declarație: Oferta independentă Outlook.com Premium a fost închisă pentru noii abonați în octombrie 2017. Multe dintre avantajele abonamentului independent
Recenzie Sky Soundbox: sunet minunat la un preț redus
Recenzie Sky Soundbox: sunet minunat la un preț redus
Sky este în curs de desfășurare în acest moment. Nu numai că gigantul TV a schimbat modul în care gândim despre contractele de telefonie mobilă cu rețeaua sa mobilă inovatoare (datele se răstoarnă și pot fi partajate între familie
Cum să aflați cine deține o casă online
Cum să aflați cine deține o casă online
Există multe motive pentru care cineva ar putea avea nevoie să afle cine deține o proprietate, cum ar fi o casă sau altă clădire. Este posibil să trebuiască să contactați proprietarul cu privire la evenimentele care se întâmplă la proprietatea lor sau să sugerați
Activați sau dezactivați istoricul clipboard în Windows 10
Activați sau dezactivați istoricul clipboard în Windows 10
Istoric clipboard este o caracteristică specială pentru sincronizarea conținutului clipboard pe toate dispozitivele conectate la contul dvs. Microsoft. Iată două metode pe care le puteți utiliza pentru a activa sau dezactiva Istoricul clipboard în Windows 10.
Conectați-vă la Windows 10 utilizând Remote Desktop (RDP)
Conectați-vă la Windows 10 utilizând Remote Desktop (RDP)
Aflați cum să vă conectați la Windows 10 de pe un alt computer utilizând Remote Desktop Connection and Remote Desktop Protocol (RDP).
Căștile Surface 2, Căștile, Surface Book 3 și Surface Go 2 sunt pregătite pentru precomandă
Căștile Surface 2, Căștile, Surface Book 3 și Surface Go 2 sunt pregătite pentru precomandă
Microsoft a pus la dispoziție mai multe dispozitive proprii disponibile pentru pre-comanda prin Microsoft Store. Lista include căștile Surface 2, căștile, Surface Book 3 și Surface Go 2. Reclama Surface Book 3 Surface Book 3 este un PC detașabil cu procesorul Intel „Ice Lake” din generația a 10-a Intel. Este disponibil sub formă de 13,5-inch sau 15-inch