Technológia 360
  • Információs Technológia
    • Információtechnológiai Hírek
    • Utasítás
No Result
View All Result
  • Információs Technológia
    • Információtechnológiai Hírek
    • Utasítás
No Result
View All Result
Technológia 360
No Result
View All Result
Home Információs Technológia Utasítás

A Lua Dissector használata a Wiresharkban

by Farkas Domonkos
2023.05.12
Share on FacebookShare on Twitter

A világ egyik legjobb hálózati csomagrögzítő eszközeként a Wireshark lehetővé teszi bizonyos adatcsomagok elérését, így offline és valós időben is elemezheti azokat. Tekintse az alkalmazást úgy, mint egy módot a hálózaton keresztül áramló adatok alapos vizsgálatára, lehetővé téve a problémák és szabálytalanságok észlelését.

A Lua Dissector használata a Wiresharkban

Dissektorokat használhat, ha egy csomag adatainak egy meghatározott részét szeretné elemezni. Ahogy a neve is sugallja, ez a folyamat „boncolja” a kódot, lehetővé téve, hogy kivágjon bizonyos szempontokat, amelyekre figyelmet kell fordítani. Ez az oktatóanyag elmagyarázza, hogyan hozhat létre és használjon disszektorokat a Wiresharkban a Lua szkriptnyelv használatával.

Mielőtt elkezdené – Amit a dissectorokról tudni kell

Bár a disszektorok gyors módot kínálnak az adatcsomag egyes részeinek elemzésére a Wiresharkban, a hatékony működéshez követniük kell néhány protokollt. Ezek a protokollok a következőket tartalmazzák:

  • Minden létrehozott dissektort regisztrálni kell egy meghatározott típusú hasznos adat kezeléséhez egy másik protokollból. A regisztráció befejezéséhez hozzá kell rendelnie egy „Proto” objektumot a boncolóhoz, amelyet alább láthat.
  • Amikor a Wiresharkon keresztül hív egy dissektort, az három dolgot kap az alkalmazástól:
    • TVB Object – TVB puffer az adatcsomagból.
    • TreeItem Object – Fagyökér, amely egyetlen csomópontot képvisel az adatfában.
    • Pinfo Object – Csomaginformációs rekord.
  • Dissector csak akkor hívható meg, ha az adatcsomagja megegyezik a „Proto” objektumra beállított DissectorTable-val.
    • Megkerülheti ezt a követelményt, ha a „Decode As” funkción keresztül kényszeríti a dissektor használatát. De akkor is csak akkor kényszerítheti a dissectort, ha a „Proto” objektumra beállított DissectorTable megfelelő típusú.

A Dissector beállítása LUA használatával

Mivel a Wireshark C programozási nyelven íródott és azt is használja, a legtöbb dissector hasonlóképpen C nyelven van írva. Érdemes azonban Lua-t használni. Ez a szkriptnyelv egyszerűbb, mint a C, és így könnyebben elérhető a kódoló újoncok, vagy azok számára, akik egyszerűen csak dissectort szeretnének létrehozni egy könnyebb nyelv használatával.

Bár a kód egyszerűbb lesz, a Lua használatakor kapott dissektor általában lassabb, mint a C használatával létrehozott. Mindazonáltal ezeket a lépéseket kell követni, ha Wireshark-bontót szeretne létrehozni Lua használatával.

1. lépés – A Lua beállítása a Wiresharkban

Be kell állítania a Lua-t, ha még nem használta a Wiresharkban:

  1. Kattintson a „Súgó”, majd az „A Wireshark névjegye” elemre.
  2. Kattintson a „Mappák” elemre.
  3. Aktív Lua-szkript létrehozásához válassza a következők egyikét:
    • Globális Lua beépülő modulok
    • Személyes Lua bővítmények
    • Személyes

Az aktiválás után a szkript készen áll, amikor elindítja a Wiresharkot. Minden alkalommal, amikor módosítja a szkriptet, vagy újra kell indítania a Wiresharkot a módosítás regisztrálásához, vagy le kell nyomnia a „Ctrl + Shift + L” billentyűket az összes Lua-szkript újratöltéséhez, hogy a módosítások aktívvá váljanak.

2. lépés – A Dissector létrehozásának alapvető lépései

Ha már ismeri a Lua-t, a következő lépésekkel létrehozhatja saját dissector szkriptjét, amely működni fog a Wiresharkban:

  • Deklarálja a disszekor protokollját, amely megköveteli, hogy beállítson egy hosszú nevet a protokollfában való használatra, és egy rövid nevet, amely a dissektor megjelenítési szűrőjének neveként szolgál.
    • Hozza létre a következő három mezőt a megfelelő típusokkal:
    • Kérdés – A kérdés típusát mutatja.
    • Válasz – A válasz típusát mutatja.
  • MessageType – Megmutatja, hogy a csomag kér-e kérdést vagy választ.
  • Regisztrálja mezőit, hogy a Wireshark tudja, hogyan jelenítse meg őket. Regisztrált mezők nélkül „Lua Error” üzenetet fog kapni, amely általában azt jelzi, hogy a faelem protomezője érvénytelen.
  • Hozzon létre egy boncolási függvényt, amely tartalmazza a korábban említett Pinfo-t (amely a csomagra vonatkozó adatokat tartalmazza) és a Fa elemet (amely létrehozza azt a fát, amelyet egy részfához fog hozzáfűzni). Létre kell hoznia egy „puffert” is, amely a TCP tetején található.
  • Adja meg mind a protokollt, mind a portot, amelyhez a Wiresharknak használnia kell a dissektort. Például beállíthatja a protokollt „TCP”-re, a portszámot pedig arra, amelyet használni szeretne.

3. lépés – Adja hozzá a Dissector-t a Wiresharkhoz

Jelenleg a boncolód olyan, mint egy villanykörte áram nélkül. Létezik, de mindaddig nem használ, amíg egy kis erőt nem tud futtatni rajta. Más szóval, a dissektor még nincs hozzáadva a Wireshark-hoz, ezért manuálisan kell hozzáadnia a futtatáshoz az alábbi lépésekkel:

  1. Kattintson a „Súgó” elemre, és lépjen az „A Wireshark névjegye” menübe.
  2. Válassza a „Mappa” lapot a Lua fájl elérési útjainak listájának megtekintéséhez.
  3. Válassza a „Személyes Lua bővítmények” lehetőséget. Ha szükséges, hozzon létre egy könyvtárat.
  4. Másolja ki és illessze be a létrehozott Lua fájlt a „Personal Lua Plugins” könyvtárba. Töltse be újra a Wiresharkot a dissektor bekapcsolásához.

Célszerű egy tesztet futtatni az új dissektoron úgy, hogy megnyit néhány rögzített csomagot. A Wiresharknak üzenetet kell küldenie, amely tartalmazza a boncolónak választott hosszú nevet, valamint az üzenet típusára vonatkozó információkat (kérdés vagy válasz) és az ellenőrzés eredményét.

Néhány mintakód

Ha még nem hozott létre boncolót (vagy még új a Lua), Wireshark praktikus példaboncolót kínál, amelyet kipróbálhat:

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)

Utóboncok és láncboncolók

Érdemes lehet egy kicsit alaposabban belemenni a dissektorok használatába, miután elsajátította a létrehozásukat Lua-ban. A Wireshark két további bontótípust kínál – posztdisszektorokat és láncolt dissektorokat –, amelyek több funkcionalitást kínálnak.

Az utóboncolás nagyjából olyan, mint az összes, egy csomaghoz futtatott dissektor utolsó ellenőrzése. Regisztrálja, hogy értesítést kapjon, amint a Wireshark minden más dissektort meghívott, amelyet használni szeretne, és használhatja a „Protokoll” és az „Info” oszlopok szűrésére. Ez a funkció különösen akkor hasznos, ha több csomagot szeretne kiszűrni egy munkamenetben, ahol hosszú idő telt el az adatkészletek között, és nem tudja mindegyiket külön-külön előhívni.

A dissektorok láncolása hasonló funkciót tölt be (legalábbis a korábban használt boncolókon keresztüli szűrés szempontjából), mivel hozzáférést biztosít egyetlen dissektor adataihoz. A legfontosabb előny itt az, hogy a láncolt dissectornak nem kell újra végigfutnia minden csomagon, így eredményt ad anélkül, hogy meg kellene várnia az eredeti dissector újrafutására.

Boncolás Luában

Tekintettel arra, hogy a Wireshark már C-ben (természetes nyelvén) is kínál disszektorokat, előfordulhat, hogy nem látja szükségét ezek létrehozására Lua nyelven is. Mindazonáltal azok, akik nem érzik jól magukat a C-vel, valamint azok, akik már elsajátították a Luát, azt tapasztalhatják, hogy a Lua könnyű forgatókönyve megkönnyíti a disszektorok létrehozását. Nyilvánvaló, hogy a folyamat futtatásakor hosszabb betöltési időt kell kialkudnia a C-alapú dissektorokhoz képest, de hasznos, ha ettől függetlenül megvan a lehetőség.

Ezzel szeretnénk hallani önről. Milyen gyakran használ disszektorokat a Wiresharkban? Próbáltad már létrehozni őket C nyelven, és szerinted milyen előnyökkel jár a boncolók Lua nyelven történő elkészítése? Tudassa velünk az alábbi megjegyzések részben.

Farkas Domonkos

Farkas Domonkos

Recommended.

A 10 legjobb alkalmazástároló alkalmazás Androidra 2022-ben

A 10 legjobb alkalmazástároló alkalmazás Androidra 2022-ben

2022.11.16
Steam Cloud mentések letöltése

Steam Cloud mentések letöltése

2022.11.10

Trending.

No Content Available

Technológia 360

Naprakész, pontos hírek és oktatás a technológiáról és a tudományról.

Categories

  • Információtechnológiai Hírek
  • Utasítás

Tags

AirPods AirPods Pro Android Apple azonosító Apple Intelligence Apple Maps Apple Music Apple Pay Facebook FaceTime Fotók alkalmazás Google térkép iCloud iMessage Instagram iOS 16 iOS 17 iOS 18 iPadOS 16 iPadOS 17 iPadOS 18 iPhone iPhone 14 iPhone 14 Pro Max iPhone 16 iPhone 16 Pro iPhone alkalmazások iPhone háttérkép Közösségi média macOS Sequoia macOS Sonoma macOS Ventura Megjegyzések Siri Snapchat Szafari Twitter Vision Pro Vélemények watchOS 9 watchOS 10 watchOS 11 WhatsApp Youtube üzenetek

Recent News

Hogyan lehet használni az Openai Sora képgenerátort a chatgpt -en keresztül

Hogyan lehet használni az Openai Sora képgenerátort a chatgpt -en keresztül

2025.05.09
Valós idejű csalás észlelése? A Chrome új funkciója játékváltó

Valós idejű csalás észlelése? A Chrome új funkciója játékváltó

2025.05.09
No Result
View All Result
  • Információs Technológia
    • Információtechnológiai Hírek
    • Utasítás