मुख्य अन्य Wireshark में Lua Dissector का उपयोग कैसे करें

Wireshark में Lua Dissector का उपयोग कैसे करें



दुनिया के सर्वश्रेष्ठ नेटवर्क पैकेट कैप्चर टूल में से एक के रूप में, Wireshark आपको विशिष्ट डेटा पैकेट प्राप्त करने की अनुमति देता है ताकि आप ऑफ़लाइन और वास्तविक समय दोनों में उनका विश्लेषण कर सकें। ऐप को अपने नेटवर्क के माध्यम से बहने वाले डेटा की बारीकी से जांच करने के तरीके के रूप में सोचें, जिससे आप मुद्दों और अनियमितताओं को पकड़ सकें।

  Wireshark में Lua Dissector का उपयोग कैसे करें

यदि आप किसी पैकेट के डेटा के किसी विशिष्ट भाग का विश्लेषण करना चाहते हैं, तो आप डिसेक्टर्स का उपयोग कर सकते हैं। जैसा कि नाम से ही स्पष्ट है, यह प्रक्रिया कोड को 'विच्छेदित' करती है, जिससे आपको कुछ ऐसे पहलुओं को काटने की अनुमति मिलती है जिन पर आपको ध्यान देने की आवश्यकता है। यह ट्यूटोरियल बताता है कि लुआ स्क्रिप्टिंग भाषा का उपयोग करके वायरशार्क में डिसेक्टर्स कैसे बनाएं और उपयोग करें।

शुरू करने से पहले - आपको डिसेक्टर्स के बारे में क्या जानना चाहिए

हालांकि डिसेक्टर्स Wireshark में डेटा पैकेट के हिस्सों का विश्लेषण करने का एक त्वरित तरीका प्रदान करते हैं, उन्हें प्रभावी ढंग से काम करने के लिए कुछ प्रोटोकॉल का पालन करना पड़ता है। इन प्रोटोकॉल में निम्नलिखित शामिल हैं:

वायज़ कैम कैसे सेट करें
  • आपके द्वारा बनाए गए प्रत्येक डिसेक्टर को एक अलग प्रोटोकॉल से एक सेट प्रकार के पेलोड को संभालने के लिए पंजीकृत होना होगा। इस पंजीकरण को पूरा करने के लिए, आपको अपने डिसेक्टर को एक 'प्रोटो' ऑब्जेक्ट असाइन करना होगा, जिसे आप नीचे देखेंगे।
  • जब आप किसी डिसेक्टर को Wireshark के माध्यम से कॉल करते हैं, तो उसे ऐप से तीन चीज़ें प्राप्त होती हैं:
    • टीवीबी ऑब्जेक्ट - डेटा पैकेट से एक टीवीबी बफर।
    • ट्रीइटम ऑब्जेक्ट - एक ट्री रूट जो डेटा ट्री में एकल नोड का प्रतिनिधित्व करता है।
    • पिन्फो ऑब्जेक्ट - एक पैकेट सूचना रिकॉर्ड।
  • आप डिसेक्टर को केवल तभी कॉल कर सकते हैं जब आपका डेटा पैकेट उस डिसेक्टरटेबल से मेल खाता हो जिसे आपने अपने 'प्रोटो' ऑब्जेक्ट पर सेट किया था।
    • आप 'डिकोड अस' फ़ंक्शन के माध्यम से एक चीड़फाड़ के उपयोग को मजबूर करके इस आवश्यकता के आसपास काम कर सकते हैं। लेकिन फिर भी, आप केवल चीड़फाड़ को बाध्य कर सकते हैं यदि आप अपने 'प्रोटो' ऑब्जेक्ट के लिए निर्धारित डिसेक्टरटेबल सही प्रकार का है।

LUA का उपयोग करके अपना डिसेक्टर सेट करना

जैसा कि Wireshark C प्रोग्रामिंग भाषा में लिखा और उपयोग किया जाता है, अधिकांश डिसेक्टर्स इसी तरह C में लिखे गए हैं। हालाँकि, आप Lua का उपयोग करना चाह सकते हैं। यह स्क्रिप्टिंग भाषा सी की तुलना में सरल है और इस प्रकार कोडिंग नवागंतुकों या उन लोगों के लिए अधिक सुलभ है जो केवल अधिक हल्की भाषा का उपयोग करके एक डिसेक्टर बनाना चाहते हैं।

हालांकि आपका कोड सरल होगा, लुआ का उपयोग करते समय आपको जो डिसेक्टर मिलता है, वह आमतौर पर आपके द्वारा सी का उपयोग करके बनाए जाने वाले की तुलना में धीमा होता है। फिर भी, यदि आप लुआ का उपयोग करके एक वायरशार्क डिसेक्टर बनाना चाहते हैं, तो ये कदम उठाने होंगे।

चरण 1 - लुआ को वायरशार्क में स्थापित करें

यदि आपने इसे पहले Wireshark में उपयोग नहीं किया है, तो आपको Lua को सेट अप करना होगा:

  1. 'Wirshark के बारे में' के बाद 'सहायता' पर क्लिक करें।
  2. 'फ़ोल्डर' पर क्लिक करें।
  3. सक्रिय Lua स्क्रिप्ट बनाने के लिए निम्न में से कोई एक चुनें:
    • वैश्विक लुआ प्लगइन्स
    • व्यक्तिगत लुआ प्लगइन्स
    • निजी

एक बार सक्रिय होने के बाद, जब भी आप Wireshark शुरू करेंगे, आपकी स्क्रिप्ट तैयार हो जाएगी। हर बार जब आप उस स्क्रिप्ट में कोई बदलाव करते हैं, तो आपको या तो बदलाव दर्ज करने के लिए Wireshark को पुनरारंभ करना होगा या अपने परिवर्तनों को सक्रिय करने के लिए अपनी सभी Lua स्क्रिप्ट को पुनः लोड करने के लिए 'Ctrl + Shift + L' दबाएं।

चरण 2 - आपका डिसेक्टर बनाने के लिए बुनियादी कदम

यदि आप पहले से ही लुआ से परिचित हैं, तो आप अपनी स्वयं की डिसेक्टर स्क्रिप्ट बनाने के लिए निम्न चरणों का उपयोग कर सकते हैं जो Wireshark में काम करेगी:

  • अपने डिसेक्टर के लिए प्रोटोकॉल की घोषणा करें, जिसके लिए आपको प्रोटोकॉल ट्री में उपयोग के लिए एक लंबा नाम और डिसेक्टर के डिस्प्ले फिल्टर नाम के रूप में कार्य करने वाला एक छोटा नाम दोनों सेट करने की आवश्यकता होती है।
    • निम्नलिखित तीन क्षेत्रों को उनके उपयुक्त प्रकारों के साथ बनाएँ:
    • प्रश्न - प्रश्न के प्रकार को दर्शाता है।
    • उत्तर – उत्तर प्रकार दिखाता है।
  • संदेश प्रकार - प्रदर्शित करता है कि आपका पैकेट प्रश्न या उत्तर का अनुरोध करता है या नहीं।
  • अपने फ़ील्ड्स को पंजीकृत करें ताकि Wireshark उन्हें प्रदर्शित करने का तरीका जान सके। पंजीकृत फ़ील्ड के बिना, आपको एक 'लुआ त्रुटि' संदेश प्राप्त होगा, जो आमतौर पर आपको बताता है कि आपका ट्री आइटम प्रोटोफिल्ड अमान्य है।
  • एक विच्छेदन फ़ंक्शन बनाएं जिसमें पहले उल्लिखित पिनफो (आपके पैकेट के बारे में डेटा शामिल है) और ट्री आइटम (पेड़ बनाकर आप एक सबट्री में जोड़ देंगे) शामिल हैं। आपको एक 'बफर' भी बनाना होगा, जो आपके टीसीपी के शीर्ष पर बैठता है।
  • उस प्रोटोकॉल और पोर्ट दोनों को निर्दिष्ट करें जिसके लिए Wireshark को चीड़फाड़ का उपयोग करना चाहिए। उदाहरण के लिए, आप प्रोटोकॉल को 'टीसीपी' और पोर्ट नंबर पर सेट कर सकते हैं जिसे आप उपयोग करना चाहते हैं।

चरण 3 - Wireshark में अपना डिसेक्टर जोड़ें

इस समय, आपका विवेचन बिना बिजली के एक प्रकाश बल्ब की तरह है। यह मौजूद है, लेकिन यह आपके लिए तब तक किसी काम का नहीं है जब तक आप इसके माध्यम से कुछ शक्ति नहीं चला सकते। दूसरे शब्दों में, आपका डिसेक्टर अभी तक Wireshark में नहीं जोड़ा गया है, इसलिए आपको इन चरणों का उपयोग करके इसे चलाने के लिए इसे मैन्युअल रूप से जोड़ना होगा:

  1. 'सहायता' पर क्लिक करें और 'वायरशार्क के बारे में' मेनू पर जाएं।
  2. अपनी Lua फ़ाइल के लिए पथों की सूची खोजने के लिए 'फ़ोल्डर' टैब चुनें।
  3. 'व्यक्तिगत लुआ प्लगइन्स' चुनें। यदि आवश्यक हो तो एक निर्देशिका बनाएँ।
  4. आपके द्वारा बनाई गई लुआ फ़ाइल को 'व्यक्तिगत लुआ प्लगइन्स' निर्देशिका में कॉपी और पेस्ट करें। चीड़फाड़ चालू करने के लिए Wireshark पुनः लोड करें।

आपके द्वारा कैप्चर किए गए कुछ पैकेटों को खोलकर अपने नए डिसेक्टर पर परीक्षण करना एक अच्छा विचार है। Wireshark को एक संदेश देना चाहिए जो संदेश प्रकार (प्रश्न या उत्तर) और आपके चेक के परिणाम के बारे में जानकारी के साथ-साथ आपके डिसेक्टर के लिए आपके द्वारा चुना गया लंबा नाम दिखाता है।

क्रोमबुक पर अपना माउस कर्सर कैसे बदलें

कुछ नमूना कोड

अगर आपने पहले कोई डिसेक्टर नहीं बनाया है (या आप लुआ के लिए नए हैं), वायरशार्क आपके लिए प्रयास करने के लिए एक आसान उदाहरण विच्छेदक प्रदान करता है:

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)

पोस्ट-विच्छेदक और श्रृंखलित-विच्छेदक

लुआ में उन्हें बनाने में महारत हासिल करने के बाद आप अपने डिसेक्टर उपयोग के साथ थोड़ी अधिक गहराई में जाना चाह सकते हैं। Wireshark दो अतिरिक्त प्रकार के डिसेक्टर्स - पोस्टडिसेक्टर्स और जंजीर डिसेक्टर्स प्रदान करता है - जो अधिक कार्यक्षमता प्रदान करते हैं।

स्ट्रैवा में एक सेगमेंट कैसे बनाएं?

एक पोस्टडिसेक्टर एक पैकेट के लिए आपके द्वारा चलाए गए सभी डिसेक्टरों की अंतिम जांच की तरह है। एक बार Wireshark ने आपके द्वारा उपयोग किए जाने वाले प्रत्येक अन्य डिसेक्टर को कॉल कर दिया है, और आप इसे 'प्रोटोकॉल' और 'जानकारी' कॉलम फ़िल्टर करने के लिए उपयोग कर सकते हैं, तो आप इसे अधिसूचित करने के लिए पंजीकृत करते हैं। यह सुविधा विशेष रूप से उपयोगी है यदि आप एक सत्र में कई पैकेटों को फ़िल्टर करना चाहते हैं जहां आपके पास डेटा सेट के बीच एक लंबा अंतर है और प्रत्येक को अलग-अलग याद नहीं कर सकते हैं।

चेनिंग डिसेक्टर्स एक समान कार्य करता है (कम से कम पहले उपयोग किए गए डिसेक्टर्स के माध्यम से फ़िल्टर करने के मामले में) आपको एक डिसेक्टर के डेटा तक पहुंच प्रदान करता है। यहाँ मुख्य लाभ यह है कि जंजीर वाले चीड़-फाड़ को फिर से हर पैकेट के माध्यम से नहीं चलना पड़ता है, जिससे आपको बिना मूल चीड़-फाड़ के फिर से चलने के लिए इंतजार करने के लिए मजबूर किए बिना परिणाम मिलता है।

लुआ में काटना

यह देखते हुए कि Wireshark पहले से ही C (इसकी प्राकृतिक भाषा) में डिसेक्टर्स बनाने की क्षमता प्रदान करता है, आप उन्हें Lua में भी बनाने की आवश्यकता नहीं देख सकते हैं। फिर भी, जो लोग सी के साथ सहज नहीं हैं, साथ ही साथ जो लोग पहले से ही लुआ में महारत हासिल कर चुके हैं, वे पा सकते हैं कि लुआ की हल्की स्क्रिप्टिंग से उनके डिसेक्टर्स बनाना आसान हो जाता है। दी गई, जब आप सी-आधारित डिसेक्टर्स की तुलना में प्रक्रिया को चलाते हैं, तो आपको लंबे समय तक लोड करने का व्यापार करना पड़ता है, लेकिन विकल्प की परवाह किए बिना यह सहायक होता है।

इसके साथ ही, हम आपसे सुनना चाहते हैं। Wireshark में आप कितनी बार डिसेक्टर्स का उपयोग करते हैं? क्या आपने उन्हें पहले सी में बनाने की कोशिश की है, और आपको क्या लगता है कि लुआ में डिसेक्टर्स बनाने से क्या लाभ होता है? नीचे टिप्पणी अनुभाग में हमें बताएं।

दिलचस्प लेख

संपादक की पसंद

स्काई वीआईपी क्या है? स्काई वीआईपी रिवार्ड्स के बारे में वह सब कुछ जो आपको जानना आवश्यक है
स्काई वीआईपी क्या है? स्काई वीआईपी रिवार्ड्स के बारे में वह सब कुछ जो आपको जानना आवश्यक है
यदि आप स्काई की एक या अधिक सेवाओं की सदस्यता लेते हैं, और यूके और आयरलैंड में रहते हैं, तो आप स्वचालित रूप से स्काई वीआईपी पुरस्कारों के लिए अर्हता प्राप्त करते हैं। स्काई वीआईपी स्काई ग्राहकों के साथ रहने और वफादार को पुरस्कृत करने के लिए एक स्वीटनर है
एंटी-अलियासिंग क्या है?
एंटी-अलियासिंग क्या है?
क्या आपने कभी अपने पीसी पर एक गेम खेलने की कोशिश की है जो आपके ग्राफिक्स कार्ड से थोड़ा अधिक हो सकता है? व्यापक विस्तारों को देखने के बजाय, आपको पिक्सेलयुक्त किनारे और अवरुद्ध रूप मिले। इन गुड़ों को आमतौर पर द्वारा समाप्त किया जाता है
मेरा फ़ोन ज़्यादा गरम क्यों हो रहा है [समझाया और तय किया गया]
मेरा फ़ोन ज़्यादा गरम क्यों हो रहा है [समझाया और तय किया गया]
पेज पर प्रोग्रामेटिक रूप से ऑटो विज्ञापनों को अक्षम नहीं कर सकते, इसलिए हम यहां हैं!
बैटलफील्ड 4 क्रॉस प्लेटफॉर्म गेम है? [व्याख्या की]
बैटलफील्ड 4 क्रॉस प्लेटफॉर्म गेम है? [व्याख्या की]
पेज पर प्रोग्रामेटिक रूप से ऑटो विज्ञापनों को अक्षम नहीं कर सकते, इसलिए हम यहां हैं!
सैमसंग गैलेक्सी वॉच 4 को कैसे रीसेट करें
सैमसंग गैलेक्सी वॉच 4 को कैसे रीसेट करें
आप गैलेक्सी वॉच 4 को गैलेक्सी वियरेबल ऐप से या सीधे वॉच से फ़ैक्टरी रीसेट कर सकते हैं। यदि आपको घड़ी को पुनः आरंभ करने की आवश्यकता है तो आप घड़ी को सॉफ्ट रीसेट भी कर सकते हैं।
विंडोज 10 में वर्बोज़ लॉगऑन संदेशों को सक्षम करें
विंडोज 10 में वर्बोज़ लॉगऑन संदेशों को सक्षम करें
विंडोज 10 लॉगऑन, साइन आउट, पुनरारंभ और शटडाउन घटनाओं के लिए विस्तृत जानकारी सक्षम करना संभव है।
विंडोज 10 में ग्रिड के लिए डेस्कटॉप आइकनों को अक्षम करें
विंडोज 10 में ग्रिड के लिए डेस्कटॉप आइकनों को अक्षम करें
यहां बताया गया है कि आप विंडोज 10 में डेस्कटॉप पर ग्रिड सुविधा के लिए संरेखित आइकन को कैसे अक्षम कर सकते हैं। डिफ़ॉल्ट रूप से, यह सक्षम है। इसे निष्क्रिय करने के दो तरीके हैं।