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

Export és Import WSL Linux Distro a Windows 10 rendszerben
Export és Import WSL Linux Distro a Windows 10 rendszerben
A Windows 10 1903. verzió, 2019. április frissítés lehetővé teszi a felhasználó számára, hogy WSL terjesztést exportáljon és importáljon egy TAR fájlba / onnan, így megosztható vagy áthelyezhető egy másik számítógépre.
Index fájl tartalma egy meghajtón a Windows 10 rendszerben
Index fájl tartalma egy meghajtón a Windows 10 rendszerben
Tudja meg, hogyan engedélyezheti a Fájltartalom-indexelést egy meghajtó számára a Windows 10 rendszerben. Ez arra készteti a Search Indexer-t, hogy hozzáadja a tartalmat és a fájl tulajdonságait az indexhez.
Javítsa ki a Windows 10 Build 18999 funkciót a leállítás és az újraindítás függvényében
Javítsa ki a Windows 10 Build 18999 funkciót a leállítás és az újraindítás függvényében
Két nappal ezelőtt a Microsoft kiadott egy új Fast Ring összeállítást a 20H1 ágból. Úgy tűnik, hogy a kiadott Windows 10 Build 18999 olyan hibát tartalmaz, amely megakadályozza az operációs rendszer leállítását és újraindítását azáltal, hogy egy halálos hurokba helyezi. A Windows 10 Build 18999 reklámja a közelgő 2020-as verziót jelenti, 20H1 kóddal.
Mi az Amazon Fire Tablet?
Mi az Amazon Fire Tablet?
Az Amazon Fire táblagépek olyan érintőképernyős eszközök, amelyek a Google Android operációs rendszerének módosított verzióján futnak, az Amazon saját alkalmazásaival és áruházával.
A Windows 10 Build 20236 (Dev Channels) hozzáadja a kijelző frissítési gyakoriságát a Beállításokhoz
A Windows 10 Build 20236 (Dev Channels) hozzáadja a kijelző frissítési gyakoriságát a Beállításokhoz
A Microsoft kiadta a Windows 10 Build 20236 szoftvert az Insidereknek a Dev csatornán. Ezzel a felépítéssel kezdve a Beállítások alkalmazásban új lehetőséggel módosíthatja a kijelző frissítési gyakoriságát. Hosszú lista található a javításokról és számos általános fejlesztésről. A Build 20236 Change újdonságai
Engedélyezze a userChrome.css és userContent.css betöltését a Firefoxban
Engedélyezze a userChrome.css és userContent.css betöltését a Firefoxban
Hogyan engedélyezhetjük a userChrome.css és userContent.css betöltését a Firefoxban. A Firefox 69 verziótól kezdve a böngésző nem tölti be a userChrome.css vagy a userContent.css fájlokat
Az Edge Chromium teljes képernyős ablakkeret DropDown felhasználói felületet kap
Az Edge Chromium teljes képernyős ablakkeret DropDown felhasználói felületet kap
A teljes képernyős ablakkeret DropDown felhasználói felület engedélyezése a Microsoft Edge Chromiumban A Microsoft csendben új funkcióval bővítette a modern, Chromium-alapú Microsoft Edge alkalmazást. Ha engedélyezve van, teljes képernyős módban hozzáad egy legördülő ablakkeretet. Ma meglátjuk, hogyan lehet aktiválni. Hirdetés A Microsoft mostantól a Vezérelt funkciót használja