Utama Lain-lain Cara Menggunakan Lua Dissector dalam Wireshark

Cara Menggunakan Lua Dissector dalam Wireshark



Sebagai salah satu alat penangkapan paket rangkaian terbaik dunia, Wireshark membolehkan anda memperoleh paket data tertentu supaya anda boleh menganalisisnya di luar talian dan dalam masa nyata. Fikirkan apl itu sebagai satu cara untuk memeriksa data yang mengalir melalui rangkaian anda dengan teliti, membolehkan anda menangkap isu dan penyelewengan.

cara memeriksa nombor yang disekat di iphone
  Cara Menggunakan Lua Dissector dalam Wireshark

Anda boleh menggunakan dissectors jika anda ingin menganalisis bahagian tertentu data paket. Seperti namanya, proses ini 'membedah' kod, membolehkan anda memotong aspek tertentu yang memerlukan perhatian anda. Tutorial ini menerangkan cara membuat dan menggunakan dissectors dalam Wireshark menggunakan bahasa skrip Lua.

Sebelum Anda Mula – Perkara yang Anda Perlu Tahu Mengenai Dissectors

Walaupun pembedah menawarkan cara cepat untuk menganalisis bahagian paket data dalam Wireshark, mereka perlu mengikut beberapa protokol untuk berfungsi dengan berkesan. Protokol ini termasuk yang berikut:

  • Setiap pembedah yang anda cipta perlu didaftarkan untuk mengendalikan jenis muatan yang ditetapkan daripada protokol yang berbeza. Untuk melengkapkan pendaftaran ini, anda mesti menetapkan objek 'Proto' kepada dissector anda, yang akan anda lihat di bawah.
  • Apabila anda memanggil pembedah melalui Wireshark, ia menerima tiga perkara daripada apl:
    • Objek TVB – Penampan TVB daripada paket data.
    • Objek TreeItem - Akar pokok yang mewakili satu nod dalam pepohon data.
    • Objek Pinfo – Rekod maklumat paket.
  • Anda hanya boleh memanggil dissector jika paket data anda sepadan dengan DissectorTable yang anda tetapkan kepada objek 'Proto' anda.
    • Anda boleh mengatasi keperluan ini dengan memaksa penggunaan dissector melalui fungsi 'Decode As'. Tetapi walaupun begitu, anda hanya boleh memaksa dissector jika DissectorTable yang anda tetapkan kepada objek 'Proto' anda adalah jenis yang betul.

Sediakan Disektor Anda Menggunakan LUA

Oleh kerana Wireshark kedua-duanya ditulis dalam dan menggunakan bahasa pengaturcaraan C, kebanyakan dissectors ditulis dalam C. Walau bagaimanapun, anda mungkin ingin menggunakan Lua. Bahasa skrip ini lebih mudah daripada C dan dengan itu lebih mudah diakses oleh pengekodan pendatang baru atau mereka yang hanya ingin mencipta pembedah menggunakan bahasa yang lebih ringan.

Walaupun kod anda akan menjadi lebih mudah, pembahagi yang anda dapat apabila menggunakan Lua biasanya lebih perlahan daripada yang anda buat menggunakan C. Namun begitu, ini adalah langkah yang perlu diikuti jika anda ingin mencipta pembahagi Wireshark menggunakan Lua.

Langkah 1 – Sediakan Lua dalam Wireshark

Anda perlu menyediakan Lua jika anda belum pernah menggunakannya dalam Wireshark sebelum ini:

  1. Klik 'Bantuan,' diikuti dengan 'Perihal Wireshark.'
  2. Klik 'Folder.'
  3. Pilih salah satu daripada yang berikut untuk mencipta skrip Lua yang aktif:
    • Pemalam Lua Global
    • Pemalam Lua Peribadi
    • Peribadi

Setelah diaktifkan, skrip anda akan sedia apabila anda memulakan Wireshark. Setiap kali anda membuat perubahan pada skrip itu, anda sama ada perlu memulakan semula Wireshark untuk mendaftarkan perubahan atau tekan 'Ctrl + Shift + L' untuk memuatkan semula semua skrip Lua anda untuk menjadikan perubahan anda aktif.

Langkah 2 – Langkah Asas untuk Mencipta Dissector Anda

Jika anda sudah biasa dengan Lua, anda boleh menggunakan langkah berikut untuk mencipta skrip dissector anda sendiri yang akan berfungsi dalam Wireshark:

  • Isytihar protokol untuk dissector anda, yang memerlukan anda menetapkan kedua-dua nama panjang untuk digunakan dalam pepohon protokol dan nama pendek yang berfungsi sebagai nama penapis paparan dissector.
    • Cipta tiga medan berikut, dengan jenis yang sesuai:
    • Soalan – Menunjukkan jenis soalan.
    • Jawapan – Menunjukkan jenis jawapan.
  • MessageType – Menunjukkan jika paket anda meminta soalan atau jawapan.
  • Daftarkan medan anda supaya Wireshark tahu cara memaparkannya. Tanpa medan berdaftar, anda akan menerima mesej 'Ralat Lua', biasanya memberitahu anda bahawa ProtoField Item Pokok anda tidak sah.
  • Cipta fungsi pembedahan yang termasuk Pinfo yang dinyatakan sebelum ini (mengandungi data tentang paket anda) dan Item Pokok (mencipta pepohon yang akan anda tambahkan pada subpokok). Anda juga mesti membuat 'penampan', yang terletak di atas TCP anda.
  • Tentukan kedua-dua protokol dan port yang Wireshark mesti menggunakan dissector. Sebagai contoh, anda boleh menetapkan protokol kepada 'TCP' dan nombor port kepada mana-mana yang anda mahu gunakan.

Langkah 3 – Tambahkan Dissector Anda ke Wireshark

Sekarang ini, dissector anda seperti mentol lampu tanpa elektrik. Ia wujud, tetapi ia tidak berguna kepada anda sehingga anda boleh menjalankan sedikit kuasa melaluinya. Dengan kata lain, dissector anda belum ditambahkan pada Wireshark lagi, jadi anda perlu menambahkannya secara manual untuk menjalankannya dengan menggunakan langkah-langkah ini:

  1. Klik pada 'Bantuan' dan pergi ke menu 'Mengenai Wireshark'.
  2. Pilih tab 'Folder' untuk mencari senarai laluan untuk fail Lua anda.
  3. Pilih 'Pemalam Lua Peribadi.' Buat direktori jika perlu.
  4. Salin dan tampal fail Lua yang anda buat ke dalam direktori 'Pemalam Lua Peribadi'. Muat semula Wireshark untuk menghidupkan dissector.

Adalah idea yang baik untuk menjalankan ujian pada dissector baharu anda dengan membuka beberapa paket yang telah anda tangkap. Wireshark harus menyampaikan mesej yang menunjukkan nama panjang yang anda pilih untuk dissector anda, bersama-sama dengan maklumat tentang jenis mesej (soalan atau jawapan) dan hasil semakan anda.

Beberapa Kod Contoh

Jika anda tidak pernah membuat pembedah sebelum ini (atau anda baru menggunakan Lua), Wireshark menawarkan pembahagi contoh yang berguna untuk anda cuba:

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)

Postdissectors dan Chained Dissectors

Anda mungkin mahu pergi sedikit lebih mendalam dengan penggunaan dissector anda setelah anda menguasai menciptanya dalam Lua. Wireshark menawarkan dua jenis dissectors tambahan - postdissectors dan chained dissectors - yang menawarkan lebih banyak fungsi.

bagaimana untuk menjadikan skor snap anda lebih tinggi

Postdissector adalah sama seperti pemeriksaan akhir semua dissectors yang anda jalankan untuk satu paket. Anda mendaftarkannya untuk dimaklumkan setelah Wireshark memanggil setiap pembedah lain yang anda mahu ia gunakan, dan anda boleh menggunakannya untuk menapis lajur 'Protokol' dan 'Maklumat'. Ciri ini amat berguna jika anda ingin menapis keluar berbilang paket dalam sesi di mana anda mempunyai jurang yang panjang antara set data dan tidak dapat mengingat setiap satu secara individu.

Pembelah rantai berfungsi dengan fungsi yang sama (sekurang-kurangnya dari segi penapisan melalui pembahagi yang digunakan sebelum ini) dengan memberi anda akses kepada data pembedah tunggal. Kelebihan utama di sini ialah pemisah berantai tidak perlu melalui setiap paket sekali lagi, memberikan anda hasil tanpa memaksa anda menunggu sehingga pembedah asal berjalan semula.

Bedah di Lua

Memandangkan Wireshark sudah menawarkan keupayaan untuk mencipta pembahagi dalam C (bahasa semula jadinya), anda mungkin tidak melihat keperluan untuk menciptanya dalam Lua juga. Namun, mereka yang tidak selesa dengan C, serta mereka yang telah menguasai Lua, mungkin mendapati bahawa skrip Lua yang ringan memudahkan untuk mencipta pembahagi mereka. Memang, anda perlu menukar masa pemuatan yang lebih lama apabila anda menjalankan proses berbanding dengan pemisah berasaskan C, tetapi adalah berguna untuk mempunyai pilihan tanpa mengira.

Dengan itu, kami ingin mendengar daripada anda. Berapa kerapkah anda menggunakan dissectors dalam Wireshark? Pernahkah anda mencuba menciptanya dalam C sebelum ini, dan apakah faedah yang anda fikir menghasilkan pembedah dalam Lua? Beritahu kami di bahagian komen di bawah.

Artikel Yang Menarik

Pilihan Editor

Cara Menambah Permainan ke Perpustakaan Discord
Cara Menambah Permainan ke Perpustakaan Discord
Discord adalah salah satu aplikasi komunikasi yang paling popular (jika bukan yang paling popular) untuk pemain. Ini menawarkan sejumlah besar manfaat dan pilihan berguna untuk pemain dan dibina untuk berfungsi di latar belakang, dengan lancar,
Windows 10 Build 20246 kini ada di saluran Dev
Windows 10 Build 20246 kini ada di saluran Dev
Microsoft telah melancarkan Windows 10 Build 20246 ke Saluran Dev. Kemas kini kini tersedia melalui Kemas kini Windows ke Orang Dalam, dan ini adalah binaan dari cabang FE_RELEASE. Hasil daripada pertukaran ke cawangan FE_RELEASE, Orang Dalam akan melihat bahawa beberapa ciri seperti pemilih emoji yang dikemas kini, papan kekunci sentuh yang direka semula, suara
UltraVNC 1.4.3.6
UltraVNC 1.4.3.6
UltraVNC ialah alat akses jauh percuma sumber terbuka, termaju dan sangat popular. Lihat ulasan lengkap kami tentang UltraVNC.
Hidupkan atau Matikan Penunjuk Kursor Teks di Windows 10
Hidupkan atau Matikan Penunjuk Kursor Teks di Windows 10
Cara Menghidupkan atau Mematikan Penunjuk Kursor Teks di Windows 10. Apabila anda mula menaip beberapa teks di Notepad, Word atau di penyunting teks lain, kursor anda berubah menjadi
Cara Menambah Folder ke Indeks Carian di Windows 10
Cara Menambah Folder ke Indeks Carian di Windows 10
Dalam artikel ini, kita akan melihat cara menambahkan folder khusus ke indeks untuk mencari kandungannya dengan lebih cepat di Windows 10.
Dapatkan tema Pelayaran untuk Windows 10, Windows 7 dan Windows 8.
Dapatkan tema Pelayaran untuk Windows 10, Windows 7 dan Windows 8.
Dapatkan gambar laut yang indah dan indah ini di Desktop Windows anda. Tema Pelayaran cantik pada mulanya dibuat untuk Windows 7, tetapi anda boleh menggunakannya di Windows 10, Windows 7 dan Windows 8. Ia mempunyai beberapa wallpaper cantik yang menampilkan kapal layar di sekitar senario dunia yang berbeza. Juga, ia dilengkapi dengan suara Seashore
Google Keep lwn. Notion
Google Keep lwn. Notion
Adakah anda seorang pelajar, profesional, atau hanya mahu menyusun aktiviti harian anda ke dalam senarai yang mudah diakses? Menyimpan nota boleh membantu anda menyusun senarai tugasan anda dengan cara yang membantu anda sentiasa berada di atas anda