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

Mario u proširenoj stvarnosti izgleda kao putovanje kiselinom na Nintendo
Mario u proširenoj stvarnosti izgleda kao putovanje kiselinom na Nintendo
Programer Abhishek Singh ima smisla za maštovite, pomalo čudne projekte, od VR-kontrolera u obliku zmaja od 20 stopa do osobnog asistenta koji komunicira u GIF-ovima. Njegov najnoviji je rekreacija proširene stvarnosti prve razine u Super
Kako izbrisati poruke na Facebook Messengeru
Kako izbrisati poruke na Facebook Messengeru
Brzo je i jednostavno izbrisati poruke i cijele razgovore u Facebook Messengeru, kako na Facebook.com tako iu aplikaciji Messenger.
Pregled Samsung Galaxy S9: Vrlo sjajan, s novom nižom cijenom
Pregled Samsung Galaxy S9: Vrlo sjajan, s novom nižom cijenom
OBAVIJEST O DIJELU: Sad ga je vodeći naslednik, S10, srušio s vodećeg, S9 sada možete podići po vrstama cijena koje nismo vidjeli od Crnog petka. Ako se uputite u Carphone Warehouse,
Fortnite Battle Royale na Androidu: Epske igre potvrđuju kako preuzeti Fortnite za Android
Fortnite Battle Royale na Androidu: Epske igre potvrđuju kako preuzeti Fortnite za Android
Fortnite Battle Royale dolazi na Android, to nije nova vijest. Međutim, napokon znamo kako će to stići u Googleov operativni sustav i imamo odgovore od Epic Gamesa zašto je tako odlučeno
Pregled Samsung Gear VR inovativnog izdanja za S6 recenziju: Budućnost je ovdje
Pregled Samsung Gear VR inovativnog izdanja za S6 recenziju: Budućnost je ovdje
Užasno puno ljudi misli da budućnost igara i kina uključuje iskorištavanje virtualne stvarnosti u nekom svojstvu. Istina, ima dosta onih koji također imaju osobni interes osigurati da se to dogodi, ali, iako bi moglo
Sony Xperia X2: glasine, specifikacije i datum izlaska
Sony Xperia X2: glasine, specifikacije i datum izlaska
U nastavku navodimo sve što znamo o sljedećem Sonyjevom pametnom telefonu, koji se može zvati Sony Xperia X2 ili ne. Međutim, ako niste privezani za Sony slušalicu, svakako provjerite
Da su ljudi evoluirali kako bi preživjeli automobilske nesreće, izgledali bismo ovako čudovišno
Da su ljudi evoluirali kako bi preživjeli automobilske nesreće, izgledali bismo ovako čudovišno
Šanse su da gornja slika nije poput gledanja u ogledalo - i odšteta ako jest. Međutim, ako nalikujete gore navedenom čovjeku, postoji i preokret: vjerojatno ste bolje opremljeni za bavljenje automobilom