Legfontosabb Egyéb A Lua Dissector használata a Wiresharkban

A Lua Dissector használata a Wiresharkban



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 dissektorá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 a 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 íródott. Azonban érdemes 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ódja egyszerűbb lesz, a Lua használatakor kapott feldaraboló általában lassabb, mint a C használatával létrehozott. Mindazonáltal ezeket a lépéseket kell követnie, 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 bővítmények
    • 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űkombinációt az összes Lua-szkript újratöltéséhez a módosítások aktiválásához.

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 Dissectort a Wiresharkhoz

Jelenleg a boncolód olyan, mint egy villanykörte áram nélkül. Létezik, de semmi hasznodra, amíg nem tudsz rajta erőt kifejteni. 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ű tesztelni az új dissektort ú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:

hogyan adjunk hozzá betűtípusokat a word mac-hoz
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 disszektorok használatába, miután elsajátította a létrehozásukat a Luá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ó nagyon hasonlít az összes olyan dissektor végső ellenőrzésére, amelyet egy csomagért futtatott. Regisztrálja, hogy értesítést kapjon, ha a Wireshark minden más dissektort meghívott, amelyet használni szeretne, és használhatja a „Protocol” é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 boncolók láncolása hasonló funkciót tölt be (legalábbis ami a korábban használt dissektorokon keresztül való szűrést illeti), mivel egyetlen dissektor adataihoz fér hozzá. 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, amíg az eredeti dissector újra fut.

Boncolás Luában

Tekintettel arra, hogy a Wireshark már kínálja a dissektorok létrehozásának lehetőségét C nyelven (természetes nyelvén), előfordulhat, hogy nem látja szükségét ezek létrehozására Lua nyelven is. Ennek ellenére 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. Igaz, a folyamat futtatásakor hosszabb betöltési időt kell lecserélnie 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.

Érdekes Cikkek

Szerkesztő Választása

Hogyan találjuk meg a szerver IP-címét a Minecraft alkalmazásban
Hogyan találjuk meg a szerver IP-címét a Minecraft alkalmazásban
Be szeretné állítani saját multiplayer Minecraft szerverét? Meg akarja találni a szerver IP-címét a Minecraft-ban, hogy mások csatlakozhassanak az Ön Minecraft-szerveréhez? A Multiplayer Minecraft egy teljesen új dimenziót kínál a játékhoz
Kép tükrözése vagy megfordítása az iPhone készüléken
Kép tükrözése vagy megfordítása az iPhone készüléken
Könnyen követhető utasítások a kép tükrözéséhez vagy megfordításához iPhone-on három ingyenes iOS-alkalmazással kép- és fényképszerkesztéshez és tükrözéshez.
Töltse le az Uninstall Edge böngészőt a Windows 10 rendszerhez
Töltse le az Uninstall Edge böngészőt a Windows 10 rendszerhez
Távolítsa el az Edge böngészőt a Windows 10 rendszerhez. Ezekkel a fájlokkal eltávolíthatja és teljesen eltávolíthatja a Microsoft Edge böngészőt a Windows 10 rendszerben. Szerző: Winaero. Töltse le az „Edge böngésző eltávolítása Windows 10 rendszerhez” méretet: 20 Kb AdvertismentPCRepair: Javítsa ki a Windows problémáit. Mindegyikük. Letöltési link: Kattintson ide a fájl letöltéséhez Támogassa a Winaerót nagymértékben
OnePlus 3T áttekintés: Jó, de elment
OnePlus 3T áttekintés: Jó, de elment
A OnePlus 3T-t újabb modellek bitorolták, a legújabb a kiváló OnePlus 5T. A vállalat már nem raktározza be a OnePlus 3T-t, de továbbra is használtan szerezheti be az Amazon-on. Ha keres
Tag Archives: Windows 10 műveleti központ
Tag Archives: Windows 10 műveleti központ
A hálózat beállítása nyilvános vagy privátra a Windows 10 rendszerben
A hálózat beállítása nyilvános vagy privátra a Windows 10 rendszerben
Így állíthatja be privát vagy nyilvános hálózatát a Windows 10 rendszerben. Ez láthatóvá teheti számítógépét a helyi hálózatban, vagy elrejtheti megosztott erőforrásait.
Hogyan tedd kicsinyre a karaktered a Robloxban
Hogyan tedd kicsinyre a karaktered a Robloxban
A Roblox egy játék a játékon belül, ahol játszol és egy játékalkotó szerepét játszod. A platform lehetővé teszi a játékosok kreativitását, és izgalmas szkripteket/játékokat oszt meg a közösséggel. De amikor a karakterek vagy az avatárok testreszabásáról van szó,