رئيسي آخر كيفية استخدام Lua Dissector في Wireshark

كيفية استخدام Lua Dissector في Wireshark



باعتبارها واحدة من أفضل أدوات التقاط حزم الشبكات في العالم ، تتيح لك Wireshark الحصول على حزم بيانات محددة حتى تتمكن من تحليلها في وضع عدم الاتصال وفي الوقت الفعلي. فكر في التطبيق كطريقة لفحص البيانات المتدفقة عبر شبكتك عن كثب ، مما يتيح لك اكتشاف المشكلات والمخالفات.

  كيفية استخدام Lua Dissector في Wireshark

يمكنك استخدام المنشقين إذا كنت تريد تحليل جزء معين من بيانات الحزمة. كما يوحي الاسم ، فإن هذه العملية 'تحلل' الشفرة ، مما يسمح لك باستبعاد بعض الجوانب التي تحتاج إلى انتباهك. يشرح هذا البرنامج التعليمي كيفية إنشاء واستخدام المنشقين في Wireshark باستخدام لغة البرمجة النصية Lua.

قبل أن تبدأ - ما تحتاج لمعرفته حول المنشقين

على الرغم من أن المنشقين يقدمون طريقة سريعة لتحليل أجزاء من حزمة البيانات في Wireshark ، يجب عليهم اتباع بعض البروتوكولات للعمل بفعالية. تشمل هذه البروتوكولات ما يلي:

  • يجب تسجيل كل منشق تقوم بإنشائه للتعامل مع نوع معين من الحمولة من بروتوكول مختلف. لإكمال هذا التسجيل ، يجب عليك تعيين كائن 'Proto' إلى المنشئ الخاص بك ، والذي ستراه أدناه.
  • عند استدعاء المنشق عبر Wireshark ، فإنه يتلقى ثلاثة أشياء من التطبيق:
    • كائن TVB - مخزن مؤقت لـ TVB من حزمة البيانات.
    • كائن TreeItem - جذر شجرة يمثل عقدة واحدة في شجرة البيانات.
    • كائن Pinfo - سجل معلومات الحزمة.
  • يمكنك فقط استدعاء المنشئ إذا كانت حزمة البيانات الخاصة بك تتطابق مع DissectorTable الذي قمت بتعيينه لكائن 'Proto' الخاص بك.
    • يمكنك التغلب على هذا المطلب عن طريق إجبار استخدام المُشرِّح عبر وظيفة 'فك الترميز باسم'. ولكن حتى ذلك الحين ، لا يمكنك إجبار المُشرِّح إلا إذا كان DissectorTable الذي قمت بتعيينه لكائن 'Proto' من النوع الصحيح.

إعداد Dissector الخاص بك باستخدام LUA

نظرًا لأن Wireshark مكتوب بلغة البرمجة C ويستخدمها ، فإن معظم المنشقين يكتبون بالمثل في C. ومع ذلك ، قد ترغب في استخدام Lua. لغة البرمجة النصية هذه أبسط من لغة C وبالتالي يسهل الوصول إليها للقادمين الجدد في مجال الترميز أو أولئك الذين يريدون ببساطة إنشاء مُشرِّح باستخدام لغة خفيفة الوزن.

على الرغم من أن الكود الخاص بك سيكون أبسط ، فإن المُشرِّح الذي تحصل عليه عند استخدام Lua يكون عادةً أبطأ من الذي تقوم بإنشائه باستخدام C. ومع ذلك ، فهذه هي الخطوات التي يجب اتباعها إذا كنت تريد إنشاء مُشرِح Wireshark باستخدام Lua.

الخطوة 1 - قم بإعداد Lua في Wireshark

ستحتاج إلى إعداد Lua إذا لم تستخدمه في Wireshark من قبل:

  1. انقر على 'تعليمات' ، متبوعًا بـ 'حول Wireshark'.
  2. انقر فوق 'المجلدات'.
  3. اختر أحد الخيارات التالية لإنشاء برنامج نصي Lua نشط:
    • الإضافات العالمية لوا
    • ملحقات لوا الشخصية
    • شخصي

بمجرد التنشيط ، سيكون البرنامج النصي جاهزًا عندما تبدأ تشغيل Wireshark. في كل مرة تقوم فيها بإجراء تغيير على هذا البرنامج النصي ، تحتاج إما إلى إعادة تشغيل Wireshark لتسجيل التغيير أو الضغط على 'Ctrl + Shift + L' لإعادة تحميل جميع نصوص Lua النصية الخاصة بك لتنشيط تغييراتك.

الخطوة الثانية - الخطوات الأساسية لإنشاء المشرِّف الخاص بك

إذا كنت معتادًا على Lua بالفعل ، فيمكنك استخدام الخطوات التالية لإنشاء نصك البرمجي الخاص بالمشريح الذي سيعمل في Wireshark:

  • قم بتعريف البروتوكول الخاص بالمحلل الخاص بك ، والذي يتطلب منك تعيين اسم طويل للاستخدام في شجرة البروتوكول واسم قصير يعمل كاسم عامل تصفية العرض للمحلل.
    • قم بإنشاء الحقول الثلاثة التالية ، وأنواعها المناسبة:
    • سؤال - يعرض نوع السؤال.
    • الإجابة - تُظهر نوع الإجابة.
  • MessageType - توضح ما إذا كانت الحزمة الخاصة بك تطلب سؤالاً أو إجابة.
  • قم بتسجيل الحقول الخاصة بك حتى يعرف Wireshark كيفية عرضها. بدون الحقول المسجلة ، ستتلقى رسالة 'Lua Error' ، تخبرك عادةً أن ProtoField لعنصر الشجرة الخاص بك غير صالح.
  • قم بإنشاء وظيفة تشريح تتضمن Pinfo المذكورة سابقًا (تحتوي على بيانات حول الحزمة الخاصة بك) و Tree Item (إنشاء الشجرة التي ستلحقها بشجرة فرعية). يجب عليك أيضًا إنشاء 'مخزن مؤقت' ، والذي يقع أعلى TCP الخاص بك.
  • حدد كلاً من البروتوكول والمنفذ اللذين يجب أن يستخدم Wireshark أداة التوزيع لهما. على سبيل المثال ، يمكنك ضبط البروتوكول على 'TCP' ورقم المنفذ إلى أيهما تريد استخدامه.

الخطوة 3 - أضف Dissector الخاص بك إلى Wireshark

الآن ، المُشرِّح الخاص بك مثل المصباح الكهربائي بدون كهرباء. إنه موجود ، لكنه لا يفيدك حتى تتمكن من تشغيل بعض القوة من خلاله. بعبارة أخرى ، لم تتم إضافة المنشئ الخاص بك إلى Wireshark حتى الآن ، لذلك عليك إضافته يدويًا لتشغيله باستخدام الخطوات التالية:

إضافة أرقام الصفحات في مستندات جوجل
  1. انقر فوق 'مساعدة' وتوجه إلى قائمة 'حول Wireshark'.
  2. حدد علامة التبويب 'مجلد' للعثور على قائمة بمسارات ملف Lua الخاص بك.
  3. اختر 'Personal Lua Plugins'. قم بإنشاء دليل إذا لزم الأمر.
  4. انسخ والصق ملف Lua الذي أنشأته في دليل 'Personal Lua Plugins'. أعد تحميل Wireshark لتشغيل المُشرِح.

من الجيد إجراء اختبار على المُشرِّح الجديد عن طريق فتح بعض الحزم التي التقطتها. يجب أن يسلم Wireshark رسالة توضح الاسم الطويل الذي اخترته للمُشرِّح الخاص بك ، إلى جانب معلومات حول نوع الرسالة (سؤال أو إجابة) ونتيجة الشيك.

بعض التعليمات البرمجية النموذجية

إذا لم تكن قد أنشأت مُشرِّحًا من قبل (أو كنت جديدًا على Lua) ، وايرشارك يقدم لك مثالا مفيدا للتشريح لتجربته:

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)

المفتشون والمفتحون بالسلاسل

قد ترغب في التعمق أكثر في استخدام المُشرِّح بمجرد أن تتقن إنشائها في Lua. يقدم Wireshark نوعين إضافيين من المُشرِّحين - المُشرِّحين اللاحقين والمُشرِّحين المتسلسل - الذين يقدمون المزيد من الوظائف.

إن المنشئ اللاحق يشبه إلى حد كبير الفحص النهائي لجميع المنشقين الذين قمت بتشغيلهم للحصول على حزمة. يمكنك تسجيله لتلقي إشعار بمجرد استدعاء Wireshark لكل منشق آخر تريد استخدامه ، ويمكنك استخدامه لتصفية عمودي 'البروتوكول' و 'المعلومات'. هذه الميزة مفيدة بشكل خاص إذا كنت تريد تصفية حزم متعددة في جلسة حيث توجد فجوة طويلة بين مجموعات البيانات ولا يمكنك استدعاء كل منها على حدة.

تخدم المنشورات المتسلسلة وظيفة مماثلة (على الأقل من حيث التصفية من خلال المُشرِّحين المُستخدمين سابقًا) من خلال منحك الوصول إلى بيانات المُشرِّح الفردي. الميزة الرئيسية هنا هي أن المُشرِّح المتسلسل لا يضطر إلى المرور عبر كل حزمة مرة أخرى ، مما يمنحك نتيجة دون إجبارك على انتظار تشغيل المُشرِّح الأصلي مرة أخرى.

تشريح في لوا

بالنظر إلى أن Wireshark توفر بالفعل القدرة على إنشاء منشورات بلغتها C (لغتها الطبيعية) ، فقد لا ترى الحاجة إلى إنشائها في Lua أيضًا. ومع ذلك ، قد يجد أولئك الذين لا يشعرون بالارتياح تجاه لغة C ، بالإضافة إلى أولئك الذين أتقنوا لغة Lua بالفعل ، أن البرمجة النصية الخفيفة لـ Lua تجعل من السهل إنشاء منشئيهم. من المؤكد أنك يجب أن تقايض وقت تحميل أطول عند تشغيل العملية مقارنة بالمنشحين المستندة إلى C ، ولكن من المفيد أن يكون لديك الخيار بغض النظر.

مع ذلك ، نريد أن نسمع منك. كم مرة تستخدم المنشقين في Wireshark؟ هل جربت إنشائها في لغة C من قبل ، وما الفوائد التي تعتقد أن جعل المنشقين في Lua يقدمها؟ واسمحوا لنا أن نعرف في قسم التعليقات أدناه.

مقالات مثيرة للاهتمام

اختيار المحرر

كيفية تحديد جميع رسائل البريد الإلكتروني في Gmail
كيفية تحديد جميع رسائل البريد الإلكتروني في Gmail
إذا كنت تستخدم Gmail كخدمة بريد إلكتروني أساسية ، فمن المحتمل أنك تلقيت عددًا كبيرًا من رسائل البريد الإلكتروني التي تريد حذفها. بدلاً من ذلك ، قد ترغب في تحديد رسائل بريد إلكتروني متعددة وتنظيمها في مجلدات. هذه المادة سوف
كيفية حساب قيمة p في Excel
كيفية حساب قيمة p في Excel
قد تبدو النظرية الكامنة وراء القيم p والفرضية الصفرية معقدة في البداية ، لكن فهم المفاهيم سيساعدك على التنقل في عالم الإحصاء. لسوء الحظ ، غالبًا ما يتم إساءة استخدام هذه المصطلحات في العلوم الشعبية ، لذلك سيكون من المفيد
اختر التطبيقات للحصول على حالة مفصلة وسريعة على شاشة القفل في نظام التشغيل Windows 10
اختر التطبيقات للحصول على حالة مفصلة وسريعة على شاشة القفل في نظام التشغيل Windows 10
يسمح Windows 10 باختيار التطبيقات التي ستظهر الحالة التفصيلية والحالة السريعة. إليك كيفية تكوين هذه الميزة.
قم بتحرير مساحة من ملفات OneDrive المتوفرة محليًا
قم بتحرير مساحة من ملفات OneDrive المتوفرة محليًا
في إصدارات Windows 10 الحديثة ، يمكنك إخلاء مساحة باستخدام OneDrive وجعل ملفاتك على الإنترنت فقط. يمكن القيام بذلك لتحديد الملفات يدويًا.
سمة Daily Bing رقم 2 لنظام التشغيل Windows 8
سمة Daily Bing رقم 2 لنظام التشغيل Windows 8
احصل على الخلفيات المذهلة التي تم جمعها من صور Bing اليومية مع سمة Daily Bing # 2 لنظام التشغيل Windows 8. للحصول على هذا المظهر ، انقر فوق رابط التنزيل أدناه ، ثم انقر فوق فتح. سيؤدي هذا إلى تطبيق السمة على سطح المكتب الخاص بك. تلميح: إذا كنت من مستخدمي Windows 7 ، فاستخدم Deskthemepack Installer لتثبيت هذا التطبيق وتطبيقه
هل ما زلت تستخدم نظام التشغيل Windows XP؟ هناك الآن حزمة خدمة غير رسمية
هل ما زلت تستخدم نظام التشغيل Windows XP؟ هناك الآن حزمة خدمة غير رسمية
قامت Microsoft بسحب القابس على نظام التشغيل Windows XP مرة أخرى في أبريل ، ولكن يبدو أن بعض المعجبين ما زالوا غير مستعدين تمامًا للتخلي عن نظام التشغيل القديم. بالنسبة لهؤلاء المستخدمين ، يُعرف المطور فقط باسم
الخطوط المستخدمة في عيد القديس باتريك
الخطوط المستخدمة في عيد القديس باتريك
يمكنك الحصول على شكل ومظهر معين لمشروعاتك الخاصة بيوم القديس باتريك باستخدام الخطوط السلتية - من العصور الوسطى والقوطية إلى الغيلية والكارولنجية.