Glavni drugo Kako uporabljati Lua Dissector v Wiresharku

Kako uporabljati Lua Dissector v Wiresharku



Kot eno najboljših orodij za zajem omrežnih paketov na svetu vam Wireshark omogoča, da pridobite določene podatkovne pakete, tako da jih lahko analizirate brez povezave in v realnem času. O aplikaciji razmišljajte kot o načinu natančnega pregleda podatkov, ki tečejo po vašem omrežju, kar vam omogoča, da odkrijete težave in nepravilnosti.

  Kako uporabljati Lua Dissector v Wiresharku

Če želite analizirati določen del podatkov paketa, lahko uporabite disektorje. Kot pove že ime, ta postopek 'razčleni' kodo, kar vam omogoča, da izrežete določene vidike, ki potrebujejo vašo pozornost. Ta vadnica pojasnjuje, kako ustvariti in uporabljati disektorje v Wiresharku z uporabo skriptnega jezika Lua.

Preden začnete – kaj morate vedeti o disektorjih

Čeprav disektorji ponujajo hiter način za analizo delov podatkovnega paketa v Wiresharku, morajo za učinkovito delovanje slediti nekaterim protokolom. Ti protokoli vključujejo naslednje:

  • Vsak disektor, ki ga ustvarite, mora biti registriran za obravnavo določene vrste tovora iz drugega protokola. Če želite dokončati to registracijo, morate svojemu disektorju dodeliti objekt »Proto«, ki ga boste videli spodaj.
  • Ko prek Wiresharka pokličete disektor, ta od aplikacije prejme tri stvari:
    • Objekt TVB – Medpomnilnik TVB iz podatkovnega paketa.
    • Predmet TreeItem – koren drevesa, ki predstavlja eno vozlišče v podatkovnem drevesu.
    • Pinfo Object – Zapis podatkov o paketu.
  • Dissector lahko pokličete le, če se vaš podatkovni paket ujema z DissectorTable, ki ste ga nastavili za svoj objekt »Proto«.
    • Tej zahtevi se lahko izognete tako, da vsilite uporabo disektorja prek funkcije »Decode As«. Toda tudi takrat lahko dissektor vsilite le, če je DissectorTable, ki ste ga nastavili na svoj objekt »Proto«, pravilnega tipa.

Nastavitev vašega disektorja z uporabo LUA

Ker je Wireshark napisan in uporablja programski jezik C, je večina dissektorjev podobno napisana v C. Vendar pa boste morda želeli uporabiti Lua. Ta skriptni jezik je enostavnejši od C in zato bolj dostopen novincem pri kodiranju ali tistim, ki preprosto želijo ustvariti disektor z lažjim jezikom.

Čeprav bo vaša koda enostavnejša, je disektor, ki ga dobite pri uporabi Lua, običajno počasnejši od tistega, ki bi ga ustvarili s C. Kljub temu so to koraki, ki jih morate upoštevati, če želite ustvariti disektor Wireshark z Luo.

1. korak – Nastavite Lua v Wiresharku

Lua boste morali nastaviti, če je še niste uporabljali v Wiresharku:

  1. Kliknite »Pomoč« in nato »O Wiresharku«.
  2. Kliknite »Mape«.
  3. Za ustvarjanje aktivnega skripta Lua izberite eno od naslednjih možnosti:
    • Globalni vtičniki Lua
    • Osebni vtičniki Lua
    • Osebno

Ko ga aktivirate, bo vaš skript pripravljen vsakič, ko zaženete Wireshark. Vsakič, ko spremenite ta skript, morate znova zagnati Wireshark, da registrirate spremembo, ali pritisniti »Ctrl + Shift + L«, da znova naložite vse svoje skripte Lua, da bodo vaše spremembe aktivne.

kako uporabljati pisave po meri v google docs -

2. korak – Osnovni koraki za ustvarjanje vašega disektorja

Če ste že seznanjeni z Luo, lahko uporabite naslednje korake za ustvarjanje lastnega dissector skripta, ki bo deloval v Wiresharku:

  • Navedite protokol za svoj disektor, ki zahteva, da nastavite dolgo ime za uporabo v drevesu protokola in kratko ime, ki služi kot ime filtra za prikaz disektorja.
    • Ustvarite naslednja tri polja z ustreznimi vrstami:
    • Vprašanje – prikaže vrsto vprašanja.
    • Odgovor – prikaže vrsto odgovora.
  • MessageType – Prikazuje, ali vaš paket zahteva vprašanje ali odgovor.
  • Registrirajte svoja polja, da bo Wireshark vedel, kako jih prikazati. Brez registriranih polj boste prejeli sporočilo »Napaka Lua«, ki vam običajno pove, da je vaše ProtoField elementa drevesa neveljavno.
  • Ustvarite funkcijo disekcije, ki vključuje prej omenjeni Pinfo (ki vsebuje podatke o vašem paketu) in Tree Item (ustvarjanje drevesa, ki ga boste dodali poddrevesu). Prav tako morate ustvariti »medpomnilnik«, ki se nahaja na vrhu vašega TCP.
  • Določite tako protokol kot vrata, za katera mora Wireshark uporabljati disektor. Na primer, lahko nastavite protokol na »TCP« in številko vrat na tisto, kar želite uporabiti.

3. korak – dodajte svoj Dissector v Wireshark

Trenutno je tvoj disektor kot žarnica brez elektrike. Obstaja, vendar vam ne koristi, dokler skozenj ne preženete moči. Z drugimi besedami, vaš disektor še ni dodan v Wireshark, zato ga morate dodati ročno, da se bo zagnal po teh korakih:

  1. Kliknite »Pomoč« in pojdite v meni »O Wiresharku«.
  2. Izberite zavihek »Mapa«, da poiščete seznam poti za datoteko Lua.
  3. Izberite »Osebni vtičniki Lua«. Po potrebi ustvarite imenik.
  4. Kopirajte in prilepite datoteko Lua, ki ste jo ustvarili, v imenik »Personal Lua Plugins«. Ponovno naložite Wireshark, da vklopite disektor.

Dobro je, da na svojem novem disektorju izvedete preizkus tako, da odprete nekaj paketov, ki ste jih zajeli. Wireshark bi moral dostaviti sporočilo, ki prikazuje dolgo ime, ki ste ga izbrali za svoj disektor, skupaj z informacijami o vrsti sporočila (vprašanje ali odgovor) in rezultatom vašega preverjanja.

naj kupim vstopnice pri stubhubu

Nekaj ​​vzorčne kode

Če še niste ustvarili disektorja (ali ste novi v Lui), Wireshark ponuja priročen primer disektorja, ki ga lahko preizkusite:

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)

Postdisektorji in verižni disektorji

Ko boste obvladali njihovo ustvarjanje v Lui, se boste morda želeli malce bolj poglobiti v uporabo svojega disektorja. Wireshark ponuja dve dodatni vrsti disektorjev – postdisektorje in verižne disektorje – ki nudita več funkcionalnosti.

Postdissektor je zelo podoben končnemu pregledu vseh dissektorjev, ki ste jih zagnali za paket. Registrirate ga, da prejmete obvestilo, ko Wireshark pokliče vse druge dissektorje, ki jih želite uporabiti, in ga lahko uporabite za filtriranje stolpcev »Protokol« in »Informacije«. Ta funkcija je še posebej uporabna, če želite filtrirati več paketov v seji, kjer ste imeli dolgo vrzel med nizi podatkov in ne morete priklicati vsakega posebej.

Verižni disektorji služijo podobni funkciji (vsaj v smislu filtriranja skozi prej uporabljene disektorje), saj vam omogočajo dostop do podatkov enega samega disektorja. Ključna prednost pri tem je, da verižnemu disektorju ni treba znova teči skozi vsak paket, kar vam daje rezultat, ne da bi morali čakati, da se prvotni disektor znova zažene.

Secirajte v Lui

Glede na to, da Wireshark že ponuja možnost ustvarjanja disektorjev v C (njegovem naravnem jeziku), morda ne boste videli potrebe, da bi jih ustvarili tudi v Lua. Kljub temu bodo tisti, ki jim C ni najbolj všeč, pa tudi tisti, ki so že obvladali Lua, morda ugotovili, da lahkotno skriptiranje Lua olajša ustvarjanje njihovih disektorjev. Res je, da morate pri izvajanju postopka zamenjati daljši čas nalaganja v primerjavi z disektorji na osnovi C, vendar je koristno imeti to možnost ne glede na to.

S tem povedanim želimo slišati vaše mnenje. Kako pogosto uporabljate disektorje v Wiresharku? Ali ste jih že poskusili ustvariti v C in kakšne prednosti po vašem mnenju prinaša izdelava disektorjev v Lui? Sporočite nam v spodnjem oddelku za komentarje.

Zanimivi Članki

Izbira Urednika

Kako uporabljati Apple Magic Trackpad na vašem računalniku
Kako uporabljati Apple Magic Trackpad na vašem računalniku
Windows ima kup sledilnih ploščic, ki jih lahko uporabite in ki dobro opravijo delo. Če imate Apple Magic Trackpad ali uporabljate Mac in Windows, je mogoče uporabiti Apple Magic Trackpad na vašem računalniku.
Kako preveriti, ali nekdo drug uporablja vaš račun WhatsApp
Kako preveriti, ali nekdo drug uporablja vaš račun WhatsApp
Tako kot mnoge druge spletne aplikacije se tudi WhatsApp po svojih najboljših močeh trudi ohraniti zasebnost in varnost podatkov svojih uporabnikov. Platforma je razmeroma varna s funkcijami, kot sta ena prijava naenkrat in dvofaktorska avtentikacija. Ampak, kot vse, kar je povezano s
Kako izklopiti OneDrive v sistemu Windows 11
Kako izklopiti OneDrive v sistemu Windows 11
Microsoft OneDrive je odlična storitev za shranjevanje in varnostno kopiranje v oblaku, a če vam ni všeč, jo lahko izklopite ali odstranite.
Kako ponastaviti preostali čas poglavja in knjige na Kindle eReaders
Kako ponastaviti preostali čas poglavja in knjige na Kindle eReaders
Kindle eReaders imajo odlično funkcijo, ki vam omogoča oceno preostalega časa branja v poglavju ali knjigi. Ampak, če ste Kindle kdaj dolgo puščali v prostem teku, lahko ta statistika postane neenakomerna. Tukaj je postopek ponastavitve s skrito nastavitvijo Kindle.
Poiščite, katero izdajo sistema Windows 10 Edition ste namestili
Poiščite, katero izdajo sistema Windows 10 Edition ste namestili
Tukaj je opis, kako lahko najdete svojo izdajo za Windows 10. Windows 10 ima na voljo številne izdaje z različnimi nabori funkcij in možnostmi.
iPhone XR – Kako uporabljati OK Google
iPhone XR – Kako uporabljati OK Google
Če želite uporabiti najboljšega virtualnega pomočnika, ki je na voljo, raje izberite Google Assistant. Trenutno je Google Assistant boljši od Siri, Alexa in vseh drugih konkurentov. Tukaj je tisto, zaradi česar izstopa.
Kako dostopati do BIOS-a v sistemu Windows 11
Kako dostopati do BIOS-a v sistemu Windows 11
Osnovni vhodno-izhodni sistem ali BIOS je vgrajen program, ki zažene Windows, ko vklopite računalnik. Upravlja tudi komunikacijo med vašim operacijskim sistemom in drugimi napravami, kot sta miška ali tipkovnica. Končno omogoča