Galvenais Cits Kā lietot Lua Dissector programmā Wireshark

Kā lietot Lua Dissector programmā Wireshark



Kā viens no pasaulē labākajiem tīkla pakešu uztveršanas rīkiem Wireshark ļauj iegūt noteiktas datu paketes, lai tās varētu analizēt gan bezsaistē, gan reāllaikā. Iedomājieties, ka lietotne ir veids, kā rūpīgi pārbaudīt tīklā plūstošos datus, ļaujot jums atklāt problēmas un pārkāpumus.

  Kā lietot Lua Dissector programmā Wireshark

Varat izmantot sadalītājus, ja vēlaties analizēt konkrētu paketes datu daļu. Kā norāda nosaukums, šis process 'izdala' kodu, ļaujot jums izgriezt dažus aspektus, kuriem jāpievērš uzmanība. Šajā apmācībā ir paskaidrots, kā programmā Wireshark izveidot un izmantot dissektorus, izmantojot Lua skriptu valodu.

Windows 10 ekrānsaudzētāja saīsne

Pirms darba sākšanas — kas jums jāzina par dissektoriem

Lai gan disektori piedāvā ātru veidu, kā Wireshark analizēt datu paketes daļas, tiem ir jāievēro daži protokoli, lai tie darbotos efektīvi. Šajos protokolos ietilpst:

  • Katram izveidotajam disektoram ir jābūt reģistrētam, lai apstrādātu noteikta veida lietderīgo slodzi no cita protokola. Lai pabeigtu šo reģistrāciju, jums ir jāpiešķir 'Proto' objekts savam disektoram, ko redzēsit tālāk.
  • Izsaucot dissektoru, izmantojot Wireshark, tas no lietotnes saņem trīs lietas:
    • TVB objekts — TVB buferis no datu paketes.
    • TreeItem objekts — koka sakne, kas apzīmē vienu mezglu datu kokā.
    • Pinfo Object — pakešu informācijas ieraksts.
  • Dissector var izsaukt tikai tad, ja jūsu datu pakete atbilst DissectorTable, kuru iestatījāt savam “Proto” objektam.
    • Varat apiet šo prasību, piespiežot izmantot dissektoru, izmantojot funkciju “Decode As”. Bet pat tad jūs varat piespiest sadalītāju tikai tad, ja DissectorTable, kuru iestatījāt savam “Proto” objektam, ir pareizā tipa.

Dissector iestatīšana, izmantojot LUA

Tā kā Wireshark ir gan rakstīts C programmēšanas valodā, gan izmanto to, lielākā daļa dissektoru ir līdzīgi rakstīti C valodā. Tomēr, iespējams, vēlēsities izmantot Lua. Šī skriptu valoda ir vienkāršāka par C un tādējādi pieejamāka kodēšanas jaunpienācējiem vai tiem, kuri vienkārši vēlas izveidot disektoru, izmantojot vieglāku valodu.

Lai gan jūsu kods būs vienkāršāks, sadalīšanas līdzeklis, ko iegūstat, izmantojot Lua, parasti ir lēnāks nekā tas, ko izveidojat, izmantojot C. Tomēr šīs ir darbības, kas jāievēro, ja vēlaties izveidot Wireshark disektoru, izmantojot Lua.

1. darbība – iestatiet Lua programmā Wireshark

Jums būs jāiestata Lua, ja iepriekš neesat to izmantojis programmā Wireshark:

konvertējot wav uz mp3 Windows multivides atskaņotāju
  1. Noklikšķiniet uz “Palīdzība”, pēc tam uz “Par Wireshark”.
  2. Noklikšķiniet uz 'Mapes'.
  3. Izvēlieties kādu no šīm iespējām, lai izveidotu aktīvu Lua skriptu:
    • Globālie Lua spraudņi
    • Personīgie Lua spraudņi
    • Personīga

Pēc aktivizēšanas jūsu skripts būs gatavs ikreiz, kad startēsiet Wireshark. Katru reizi, kad veicat izmaiņas šajā skriptā, jums vai nu ir jārestartē programma Wireshark, lai reģistrētu izmaiņas, vai arī nospiediet taustiņu kombināciju Ctrl + Shift + L, lai atkārtoti ielādētu visus Lua skriptus un padarītu izmaiņas aktīvas.

2. darbība — Dissector izveides pamatdarbības

Ja jau esat iepazinies ar Lua, varat veikt šādas darbības, lai izveidotu savu sadalīšanas skriptu, kas darbosies programmā Wireshark:

  • Deklarējiet sava disektora protokolu, kurā ir jāiestata gan garais nosaukums izmantošanai protokolu kokā, gan īss nosaukums, kas kalpo kā disektora displeja filtra nosaukums.
    • Izveidojiet šādus trīs laukus ar atbilstošiem veidiem:
    • Jautājums — parāda jautājuma veidu.
    • Atbilde — parāda atbildes veidu.
  • MessageType — parāda, vai jūsu pakete pieprasa jautājumu vai atbildi.
  • Reģistrējiet savus laukus, lai Wireshark zinātu, kā tos parādīt. Ja nav reģistrēti lauki, jūs saņemsit ziņojumu “Lua Error”, kas parasti norāda, ka koka vienuma protolauks nav derīgs.
  • Izveidojiet sadalīšanas funkciju, kas ietver iepriekš minēto Pinfo (kas satur datus par jūsu paketi) un Tree Item (izveido koku, kuru pievienosit apakškokam). Jums ir arī jāizveido 'buferis', kas atrodas jūsu TCP augšpusē.
  • Norādiet gan protokolu, gan portu, kuram Wireshark ir jāizmanto disektors. Piemēram, varat iestatīt protokolu uz “TCP” un porta numuru, kuru vēlaties izmantot.

3. darbība - pievienojiet savu disektoru programmai Wireshark

Pašlaik jūsu disektors ir kā spuldze bez elektrības. Tas pastāv, taču tas jums nelīdzēs, kamēr nevarat to izmantot. Citiem vārdiem sakot, jūsu disektors vēl nav pievienots programmai Wireshark, tāpēc jums tas ir jāpievieno manuāli, lai tas darbotos, veicot šīs darbības:

  1. Noklikšķiniet uz “Palīdzība” un dodieties uz izvēlni “Par Wireshark”.
  2. Atlasiet cilni “Mape”, lai atrastu Lua faila ceļu sarakstu.
  3. Izvēlieties 'Personiskie Lua spraudņi'. Ja nepieciešams, izveidojiet direktoriju.
  4. Kopējiet un ielīmējiet izveidoto Lua failu direktorijā “Personal Lua Plugins”. Atkārtoti ielādējiet programmu Wireshark, lai ieslēgtu disektoru.

Ieteicams pārbaudīt jauno disektoru, atverot dažas no uzņemtajām paketēm. Wireshark ir jānogādā ziņojums, kurā parādīts garais nosaukums, kuru izvēlējāties savam disektoram, kā arī informācija par ziņojuma veidu (jautājums vai atbilde) un jūsu pārbaudes rezultāts.

Daži koda paraugi

Ja iepriekš neesat izveidojis dissektoru (vai esat jauns Lua lietotājs), Wireshark piedāvā parocīgu disektora piemēru, ko varat izmēģināt:

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)

Postdisektori un pieķēdētie preparētāji

Kad esat apguvis to izveidi programmā Lua, iespējams, vēlēsities mazliet padziļināti izmantot dissektorus. Wireshark piedāvā divus papildu sadalīšanas veidus – postdisektorus un ķēdītos disektorus, kas piedāvā vairāk funkcionalitātes.

Postdissektors ir ļoti līdzīgs visu sadalītāju galīgajai pārbaudei, ko esat izmantojis paketei. Jūs to reģistrējat, lai saņemtu paziņojumu, tiklīdz Wireshark ir izsaucis visus pārējos disektorus, kurus vēlaties izmantot, un varat to izmantot, lai filtrētu kolonnas “Protocol” un “Info”. Šī funkcija ir īpaši noderīga, ja vēlaties filtrēt vairākas paketes sesijā, kurā ir bijusi ilga starpība starp datu kopām un jūs nevarat atcerēties katru atsevišķi.

kāpēc man nav visu filtru snapchat

Ķēdes sadalīšana veic līdzīgu funkciju (vismaz attiecībā uz filtrēšanu, izmantojot iepriekš izmantotos dissektorus), nodrošinot piekļuvi viena disektora datiem. Galvenā priekšrocība šeit ir tā, ka ķēdītajam disektoram nav vēlreiz jāiziet cauri katrai paketei, nodrošinot rezultātu, neliekot gaidīt, līdz sāksies sākotnējais sadalītājs.

Preparēt Luā

Ņemot vērā, ka Wireshark jau piedāvā iespēju izveidot dissektorus C valodā (tā dabiskajā valodā), iespējams, ka jūs neredzat vajadzību tos izveidot arī Lua valodā. Tomēr tie, kuriem nejūtas apmierināti ar C, kā arī tie, kuri jau ir apguvuši Lua valodu, var atklāt, ka Lua vieglais skripts atvieglo disektoru izveidi. Protams, jums ir jāsamazina ilgāks ielādes laiks, palaižot procesu, salīdzinot ar C balstītiem sadalītājiem, taču ir lietderīgi, ja jums ir šāda iespēja neatkarīgi no tā.

To sakot, mēs vēlamies dzirdēt no jums. Cik bieži jūs izmantojat dissektorus Wireshark? Vai esat mēģinājis tos izveidot C valodā, un kādus ieguvumus, jūsuprāt, sniedz sadalītāju izgatavošana Lua valodā? Paziņojiet mums tālāk komentāru sadaļā.

Interesanti Raksti

Redaktora Izvēle

Kā norēķināties skaidrā naudā ar Uber
Kā norēķināties skaidrā naudā ar Uber
Parasti cilvēki, kas brauc ar Uber braucieniem, maksā ar savām kredītkartēm, bet vai zinājāt, ka Uber ļauj maksāt arī ar skaidru naudu? Tomēr tas ir pieejams tikai noteiktās vietās. Apskatīsim, kā jūs
Kas ir projektora priekšējie lukturi?
Kas ir projektora priekšējie lukturi?
Projektora priekšējie lukturi ir spilgtāki nekā priekšējie reflektori, un tie arī rada mazāk atspīdumu, ja tie ir pareizi uzstādīti.
Atspējot funkciju atjaunināšanas bloka aizsargpasākumus operētājsistēmā Windows 10
Atspējot funkciju atjaunināšanas bloka aizsargpasākumus operētājsistēmā Windows 10
Kā atspējot funkciju atjaunināšanas bloka drošības pasākumus operētājsistēmā Windows 10 Kā jūs jau zināt, ne katrs lietotājs tūlīt pēc tā izlaišanas var iegūt jaunāko Windows 10 versiju. Parasti tas aizņem diezgan ilgu laiku, pirms tas nonāk visās atbalstītajās ierīcēs, jo Microsoft atrisina saderības problēmas ar programmatūru un aparatūru,
Kā ierakstīt Tildes atzīmi
Kā ierakstīt Tildes atzīmi
Ievadiet rakstzīmes ar tildes zīmēm Mac datorā, Windows datorā, mobilajā ierīcē vai HTML, izmantojot īsinājumtaustiņus un rakstzīmju kodus.
Kā novērst pastāvīgu buferizāciju pakalpojumā Disney Plus
Kā novērst pastāvīgu buferizāciju pakalpojumā Disney Plus
Disney Plus ir straumēšanas pakalpojums, kas ir tikai pāris mēnešus vecs. Paturot to prātā, jūs nevarat sagaidīt, ka tas būs nevainojams. Ir daži izplatīti Disney Plus jautājumi, par kuriem ziņojuši lietotāji, piemēram,
Sony Vegas Pro 13 pārskats
Sony Vegas Pro 13 pārskats
Vegas Pro ir Adobe Premiere Pro un Apple Final Cut Pro X cienīgs konkurents, taču viena vai otra iemesla dēļ tas, šķiet, nav daudzu nozares profesionāļu radaros. Sony cer to mainīt ar šo
Pārlūkprogrammā Close iespējojiet profila iznīcināšanu pārlūkprogrammā Google Chrome
Pārlūkprogrammā Close iespējojiet profila iznīcināšanu pārlūkprogrammā Google Chrome
Kā iespējot profila iznīcināšanu pārlūkprogrammā Aizvērt pārlūkprogrammā Google Chrome, lai patērētu mazāk atmiņas, izkraujot neizmantotos profilus no atmiņas. Google strādā pie pārlūka Chrome atmiņas patēriņa uzlabojumiem. Viena no ilgstošajām problēmām ir tā, ka pārlūkprogrammā ielādētie lietotāju profili paliek atmiņā, pat ja aizverat pārlūku Chrome