Glavni ostalo Kako koristiti Lua Dissector u Wiresharku

Kako koristiti Lua Dissector u Wiresharku



Kao jedan od najboljih svjetskih alata za hvatanje mrežnih paketa, Wireshark vam omogućuje da dobijete određene pakete podataka kako biste ih mogli analizirati izvan mreže i u stvarnom vremenu. Zamislite aplikaciju kao način da pažljivo ispitate podatke koji teku kroz vašu mrežu, što vam omogućuje da uhvatite probleme i nepravilnosti.

  Kako koristiti Lua Dissector u Wiresharku

Možete koristiti disektore ako želite analizirati određeni dio podataka paketa. Kao što naziv implicira, ovaj proces 'secira' kod, omogućujući vam da izrežete određene aspekte koji zahtijevaju vašu pozornost. Ovaj vodič objašnjava kako stvoriti i koristiti dissektore u Wiresharku koristeći Lua skriptni jezik.

Prije nego počnete – što trebate znati o disektorima

Iako disektori nude brz način analize dijelova paketa podataka u Wiresharku, moraju slijediti neke protokole da bi učinkovito radili. Ovi protokoli uključuju sljedeće:

  • Svaki dissektor koji stvorite mora biti registriran za rukovanje određenom vrstom korisnog opterećenja iz drugog protokola. Da biste dovršili ovu registraciju, morate svom disektoru dodijeliti objekt 'Proto', što ćete vidjeti u nastavku.
  • Kada pozovete dissektor putem Wiresharka, on od aplikacije prima tri stvari:
    • TVB objekt – TVB međuspremnik iz podatkovnog paketa.
    • Objekt TreeItem – korijen stabla koji predstavlja jedan čvor u stablu podataka.
    • Pinfo Object – Zapis podataka o paketu.
  • Dissector možete pozvati samo ako se vaš podatkovni paket podudara s DissectorTableom koji ste postavili na svoj “Proto” objekt.
    • Ovaj zahtjev možete zaobići prisiljavanjem na upotrebu disektora putem funkcije 'Decode As'. Ali čak i tada, dissektor možete prisiliti samo ako je DissectorTable koji ste postavili na svoj “Proto” objekt ispravnog tipa.

Postavljanje disektora pomoću LUA

Budući da je Wireshark i napisan u programskom jeziku C i koristi ga, većina dissektora je na sličan način napisana u C-u. Međutim, možda biste željeli koristiti Lua. Ovaj skriptni jezik jednostavniji je od C-a i stoga pristupačniji početnicima u kodiranju ili onima koji jednostavno žele stvoriti dissektor koristeći lakši jezik.

Iako će vaš kod biti jednostavniji, dissektor koji dobijete korištenjem Lua obično je sporiji od onog koji biste izradili pomoću C. Ipak, ovo su koraci koje trebate slijediti ako želite stvoriti Wireshark dissektor koristeći Lua.

Korak 1 – Postavite Lua u Wiresharku

Morat ćete postaviti Lua ako ga prije niste koristili u Wiresharku:

  1. Kliknite 'Pomoć', a zatim 'O Wiresharku'.
  2. Kliknite 'Mape'.
  3. Odaberite jedno od sljedećeg za izradu aktivne Lua skripte:
    • Globalni Lua dodaci
    • Osobni Lua dodaci
    • Osobno

Nakon aktivacije, vaša će skripta biti spremna kad god pokrenete Wireshark. Svaki put kada napravite promjenu na toj skripti, trebate ponovno pokrenuti Wireshark da registrirate promjenu ili pritisnuti “Ctrl + Shift + L” da ponovno učitate sve svoje Lua skripte kako bi vaše promjene postale aktivne.

Korak 2 – Osnovni koraci za izradu vašeg disektora

Ako ste već upoznati s Luom, možete upotrijebiti sljedeće korake za izradu vlastite dissektorske skripte koja će raditi u Wiresharku:

  • Deklarirajte protokol za svoj dissektor, što zahtijeva da postavite dugo ime za upotrebu u stablu protokola i kratko ime koje služi kao naziv filtra za prikaz disektora.
    • Napravite sljedeća tri polja s odgovarajućim vrstama:
    • Pitanje – Prikazuje vrstu pitanja.
    • Odgovor – Prikazuje vrstu odgovora.
  • MessageType – pokazuje zahtijeva li vaš paket pitanje ili odgovor.
  • Registrirajte svoja polja kako bi Wireshark znao kako ih prikazati. Bez registriranih polja, primit ćete poruku 'Lua Error', koja vam obično govori da je vaše ProtoField stavke stabla nevažeće.
  • Napravite funkciju disekcije koja uključuje prethodno spomenuti Pinfo (koji sadrži podatke o vašem paketu) i Tree Item (stvarajući stablo koje ćete dodati podstablu). Također morate stvoriti 'međuspremnik' koji se nalazi na vrhu vašeg TCP-a.
  • Navedite i protokol i priključak za koji Wireshark mora koristiti dissektor. Na primjer, možete postaviti protokol na 'TCP' i broj porta na onaj koji želite koristiti.

Korak 3 – Dodajte svoj Dissector u Wireshark

Upravo sada, vaš dissektor je kao žarulja bez struje. Postoji, ali vam nije od koristi dok kroz njega ne provedete malo energije. Drugim riječima, vaš dissektor još nije dodan u Wireshark, pa ga morate dodati ručno da biste ga pokrenuli koristeći ove korake:

  1. Kliknite na 'Pomoć' i idite na izbornik 'O Wiresharku'.
  2. Odaberite karticu 'Mapa' kako biste pronašli popis staza za svoju Lua datoteku.
  3. Odaberite 'Osobni dodaci za Lua.' Izradite imenik ako je potrebno.
  4. Kopirajte i zalijepite Lua datoteku koju ste stvorili u direktorij 'Personal Lua Plugins'. Ponovno učitajte Wireshark da biste uključili disektor.

Bilo bi dobro pokrenuti test na vašem novom disektoru otvaranjem nekih paketa koje ste uhvatili. Wireshark bi trebao isporučiti poruku koja prikazuje dugo ime koje ste odabrali za svoj dissektor, zajedno s informacijama o vrsti poruke (pitanje ili odgovor) i rezultat vaše provjere.

Neki primjer koda

Ako prije niste stvorili dissektor (ili ste novi u Lui), Wireshark nudi praktičan primjer disektora koji možete isprobati:

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)

Postdisektori i lančani disektori

Možda ćete htjeti ići malo dublje s upotrebom disektora nakon što svladate njihovu izradu u Lui. Wireshark nudi dvije dodatne vrste disektora – postdisektore i lančane disektore – koji nude više funkcionalnosti.

Postdissektor je dosta sličan konačnoj provjeri svih dissektora koje ste pokrenuli za paket. Registrirate ga da dobijete obavijest nakon što Wireshark pozove svaki drugi dissektor koji želite da koristi, a možete ga koristiti za filtriranje stupaca 'Protokol' i 'Informacije'. Ova je značajka posebno korisna ako želite filtrirati više paketa u sesiji u kojoj ste imali veliki razmak između skupova podataka i ne možete se sjetiti svakog pojedinačno.

kako promijeniti vrijeme na snapchat filtru -

Lančano povezivanje disektora ima sličnu funkciju (barem u smislu filtriranja kroz prethodno korištene disektore) dajući vam pristup podacima jednog disektora. Ključna prednost ovdje je da ulančani dissektor ne mora ponovno prolaziti kroz svaki paket, dajući vam rezultat bez da morate čekati da se originalni dissektor ponovno pokrene.

Secirajte u Lui

S obzirom da Wireshark već nudi mogućnost stvaranja disektora u C-u (njegovom prirodnom jeziku), možda nećete vidjeti potrebu za njihovim stvaranjem i u Lua-i. Ipak, oni koji nisu zadovoljni s C-om, kao i oni koji su već svladali Lua, mogli bi otkriti da lagano skriptiranje Lua olakšava stvaranje njihovih disektora. Doduše, kada pokrenete proces morate zamijeniti dulje vrijeme učitavanja u usporedbi s disektorima baziranim na C-u, ali bez obzira na to korisno je imati tu opciju.

Uz to rečeno, želimo čuti vaše mišljenje. Koliko često koristite disektore u Wiresharku? Jeste li ih prije pokušali izraditi u C-u i što mislite koje prednosti donosi izrada disektora u Lui? Javite nam u odjeljku za komentare ispod.

Zanimljivi Članci

Izbor Urednika

Onemogućite gumb Natrag u dijaloškom okviru Open Open File u sustavu Windows 10
Onemogućite gumb Natrag u dijaloškom okviru Open Open File u sustavu Windows 10
Kako onemogućiti gumb za povratak u uobičajenom dijaloškom okviru za otvorene datoteke u sustavu Windows 10. Uobičajeni 'dijaloški okvir otvorene datoteke' jedna je od klasičnih kontrola dostupnih u sustavu Windows 10.
Ažurirani alat za izrezivanje u sustavu Windows 10 Build 15014
Ažurirani alat za izrezivanje u sustavu Windows 10 Build 15014
U sustavu Windows 10 Creators Update Microsoft dodaje puno novih značajki u operativni sustav. No nekoliko promjena u klasičnim aplikacijama bilo je neočekivano. Alat za izrezivanje dobio je ažurirano korisničko sučelje. U sustavu Windows 10 gradnje 15014, alat za izrezivanje dobio je zasebni gumb za akciju snimanja. Prije je bilo isto
Kako prebaciti Apple TV na Chromecast
Kako prebaciti Apple TV na Chromecast
Ne možete emitirati aplikaciju Apple TV na Chromecast, ali možete emitirati Apple TV web mjesto i web player iz Chromea na Chromecast.
Kako otvoriti Jupyterovu bilježnicu u VS kodu
Kako otvoriti Jupyterovu bilježnicu u VS kodu
Ako ste programer, podatkovni znanstvenik, edukator ili student, velike su šanse da ćete morati koristiti Visual Studio Code i Jupyter Notebook. Srećom, dva su sustava integrirana i otvaranje Jupyter prijenosnog računala u VS Codeu ne postoji
Kako prepoznati lažne pratitelje za Instagram račun
Kako prepoznati lažne pratitelje za Instagram račun
Lažni Instagram sljedbenici su računi koji su obično napravljeni za jednu svrhu - povećati stopu praćenja i angažmana drugih Instagram računa. Koliko ste puta naišli na Instagram profil s tisućama pratitelja, ali manje od deset lajkova
Spriječite instalaciju Microsoft Edge Chromiuma putem Windows Update
Spriječite instalaciju Microsoft Edge Chromiuma putem Windows Update
Kako spriječiti instaliranje Microsoft Edge Chromiuma putem Windows Update Microsoft će isporučiti stabilnu verziju Edge Chromiuma 15. siječnja 2020. Aplikacija će se automatski prebaciti na korisnike Windows 10 koji rade pod Windowsom 10. travnja 2018. Ažuriranje 'Redstone 4', i iznad. Evo što treba učiniti ako to učinite
Prekini pokretanje WSL Linuxa Distro u sustavu Windows 10
Prekini pokretanje WSL Linuxa Distro u sustavu Windows 10
Čak i ako napustite svoju WSL Linux sesiju, ona ostaje aktivna u pozadini. Evo kako prekinuti pokrenutu distribuciju WSL Linuxa u sustavu Windows 10.