Maailma ühe parima võrgupakettide püüdmise tööriistana võimaldab Wireshark teil saavutada konkreetseid andmepakette, et saaksite neid analüüsida nii võrguühenduseta kui ka reaalajas. Mõelge rakendusele kui võimalusele oma võrgu kaudu voolavaid andmeid tähelepanelikult uurida, võimaldades teil tuvastada probleeme ja eeskirjade eiramisi.
Saate kasutada dissektoreid, kui soovite analüüsida paketi andmete teatud osa. Nagu nimigi ütleb, 'lahkab' see protsess koodi, võimaldades teil välja lõigata teatud aspektid, mis vajavad teie tähelepanu. See õpetus selgitab, kuidas Lua skriptikeelt kasutades Wiresharkis dissektoreid luua ja kasutada.
Enne alustamist – mida peate dissectorite kohta teadma
Kuigi dissektorid pakuvad kiiret viisi andmepaketi osade analüüsimiseks Wiresharkis, peavad nad tõhusaks tööks järgima mõnda protokolli. Need protokollid hõlmavad järgmist.
- Iga loodud dissektor peab olema registreeritud, et käsitleda teatud tüüpi kasulikku koormust erinevast protokollist. Selle registreerimise lõpuleviimiseks peate määrama oma dissektorile 'Proto' objekti, mida näete allpool.
- Kui helistate Wiresharki kaudu dissektorile, saab see rakendusest kolm asja:
- TVB Object – TVB puhver andmepaketist.
- TreeItem Object – puujuur, mis esindab andmepuu ühte sõlme.
- Pinfo Object – paketiteabe kirje.
- Dissektorit saate kutsuda ainult siis, kui teie andmepakett vastab DissectorTable-le, mille määrasite oma objektile 'Proto'.
- Saate sellest nõudest mööda minna, sundides funktsiooni 'Decode As' kaudu kasutama dissektorit. Kuid isegi siis saate dissektorit sundida ainult siis, kui DissectorTable, mille määrasite oma objektile 'Proto', on õiget tüüpi.
Dissectori seadistamine LUA abil
Kuna Wireshark on nii kirjutatud C-programmeerimiskeeles ja kasutab seda, on enamik dissektoreid sarnaselt kirjutatud C-keeles. Siiski võite soovida kasutada Lua-d. See skriptikeel on lihtsam kui C ja seega paremini juurdepääsetav kodeerivatele uustulnukatele või neile, kes soovivad lihtsalt luua dissektori, kasutades kergemat keelt.
Kuigi teie kood on lihtsam, on Lua kasutamisel saadav dissektor tavaliselt aeglasem kui see, mille loote C-ga. Sellegipoolest tuleb järgida neid samme, kui soovite luua Lua abil Wiresharki dissektori.
kuidas ss ilma neid teadmata
1. samm – seadistage Lua Wiresharkis
Kui te pole seda varem Wiresharkis kasutanud, peate Lua seadistama.
- Klõpsake 'Abi', seejärel 'About Wireshark'.
- Klõpsake 'Kaustad'.
- Valige aktiivse Lua skripti loomiseks üks järgmistest.
- Globaalsed Lua pistikprogrammid
- Isiklikud Lua pistikprogrammid
- Isiklik
Pärast aktiveerimist on teie skript valmis iga kord, kui käivitate Wiresharki. Iga kord, kui teete selles skriptis muudatusi, peate muudatuse registreerimiseks taaskäivitama Wiresharki või vajutage klahvikombinatsiooni Ctrl + Shift + L, et muudatuste aktiveerimiseks uuesti laadida kõik oma Lua skriptid.
2. samm – dissektori loomise põhietapid
Kui olete Luaga juba tuttav, saate Wiresharkis töötava dissektori skripti loomiseks kasutada järgmisi samme.
- Deklareerige oma dissektori protokoll, mis nõuab nii pika nime määramist protokollipuus kasutamiseks kui ka lühikese nime, mis toimib dissektori kuvafiltri nimena.
- Looge järgmised kolm välja koos nende sobivate tüüpidega.
- Küsimus – näitab küsimuse tüüpi.
- Vastus – näitab vastuse tüüpi.
- MessageType – näitab, kas teie pakett nõuab küsimust või vastust.
- Registreerige oma väljad, et Wireshark teaks, kuidas neid kuvada. Ilma registreeritud väljadeta kuvatakse teade „Lua Error”, mis tavaliselt ütleb, et teie puuüksuse protoväli on kehtetu.
- Looge lahkamisfunktsioon, mis sisaldab eelnevalt mainitud Pinfot (sisaldab andmeid teie paketi kohta) ja Tree Item (puu loomine, mille alampuule lisate). Samuti peate looma 'puhvri', mis asub teie TCP peal.
- Määrake nii protokoll kui ka port, mille jaoks Wireshark dissektorit kasutama peab. Näiteks saate määrata protokolli 'TCP' ja pordi numbri, mida soovite kasutada.
3. samm – lisage oma dissector Wiresharki
Praegu on teie dissektor nagu elektripirn. See on olemas, kuid sellest pole teile kasu enne, kui saate selle kaudu jõudu kasutada. Teisisõnu, teie dissektor pole veel Wiresharki lisatud, nii et peate selle käsitsi lisama, et see käivitada, järgides neid samme.
käsuviip täisekraanil
- Klõpsake nuppu 'Abi' ja minge menüüsse 'Teave Wiresharki kohta'.
- Valige vahekaart 'Kaust', et leida oma Lua-faili teede loend.
- Valige 'Isiklikud Lua pluginad'. Vajadusel looge kataloog.
- Kopeerige ja kleepige loodud Lua fail kataloogi 'Personal Lua Plugins'. Dissektori sisselülitamiseks laadige uuesti Wireshark.
Hea mõte on testida oma uut dissektorit, avades mõned jäädvustatud paketid. Wireshark peaks edastama sõnumi, mis näitab dissektorile valitud pikka nime koos teabega sõnumi tüübi (küsimus või vastus) ja kontrolli tulemuste kohta.
Mõned näidiskoodid
Kui te pole varem dissektorit loonud (või olete Lua uus kasutaja), Wireshark pakub teile proovimiseks käepärast lahkaja näidet:
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)
Postdissektorid ja aheldatud dissektorid
Võib-olla soovite oma dissektorite kasutamisega veidi põhjalikumalt minna, kui olete õppinud neid Luas looma. Wireshark pakub kahte täiendavat tüüpi dissektoreid – postdissektoreid ja aheldatud dissektoreid –, mis pakuvad rohkem funktsionaalsust.
Järeldissektor sarnaneb paljuski kõigi paketi jaoks käivitatud lahkajate viimase kontrolliga. Registreerite selle, et saada märguanne, kui Wireshark on helistanud kõigile teistele dissektoritele, mida soovite kasutada, ja saate seda kasutada veergude „Protokoll” ja „Teave” filtreerimiseks. See funktsioon on eriti kasulik, kui soovite välja filtreerida mitu paketti seansi jooksul, kus andmekogumite vahel on pikk vahe ja te ei suuda neid kõiki eraldi meelde tuletada.
kuidas anda admin vastuolude korral
Dissektorite aheldamine täidab sarnast funktsiooni (vähemalt varem kasutatud dissektorite kaudu filtreerimise osas), andes teile juurdepääsu ühe dissektori andmetele. Peamine eelis on see, et aheldatud lahkaja ei pea uuesti iga paketti läbi jooksma, andes teile tulemuse, ilma et peaksite ootama, kuni algne dissector uuesti töötab.
Lahkamine Luas
Arvestades, et Wireshark pakub juba C-s (oma loomulikus keeles) dissektorite loomist, ei pruugi te näha vajadust nende loomiseks ka Luas. Sellegipoolest võivad need, kes ei tunne C-d hästi, aga ka need, kes on juba Luat õppinud, avastada, et Lua kerge skriptimine muudab dissektorite loomise lihtsamaks. Tõsi, peate protsessi käivitamisel leppima pikema laadimisajaga võrreldes C-põhiste dissektoritega, kuid see on kasulik, kui teil on võimalus sellest hoolimata.
Sellega seoses tahame sinust kuulda. Kui tihti te Wiresharkis dissektoreid kasutate? Kas olete proovinud neid varem C-vormingus luua ja millist kasu teie arvates Luas lahkajate tegemine pakub? Andke meile teada allpool olevas kommentaaride jaotises.