رئيسي آخر كيفية استخدام 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 يقدمها؟ واسمحوا لنا أن نعرف في قسم التعليقات أدناه.

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

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

كيفية حظر موقع يوتيوب على جهاز Kindle Fire
كيفية حظر موقع يوتيوب على جهاز Kindle Fire
نعم ، نعلم جميعًا مدى سهولة الإدمان على مقاطع فيديو YouTube وقضاء ساعات متتالية في لصق جهاز Kindle Fire. لحسن الحظ ، من السهل حظر YouTube أو أي تطبيق آخر على Kindle Fire و
كيفية استخدام VPN مع BlueStacks
كيفية استخدام VPN مع BlueStacks
هل تبحث عن طريقة لحماية خصوصيتك أثناء استخدام بلوستاكس؟ إذا كان الأمر كذلك ، فلدينا حل: استخدام شبكة افتراضية خاصة (VPN). لن يؤدي ذلك إلى زيادة خصوصيتك على الإنترنت فحسب ، بل سيؤدي أيضًا إلى تمكينه
يعرض Firefox الآن عارض مصدر صفحة الويب في علامة تبويب
يعرض Firefox الآن عارض مصدر صفحة الويب في علامة تبويب
في Firefox 41 ، يتم فتح مصدر الصفحة الآن في علامة تبويب جديدة بدلاً من فتحها في نافذة جديدة. إليك كيفية تعطيله.
يتميز متصفح Vivaldi بتحديثات دلتا
يتميز متصفح Vivaldi بتحديثات دلتا
أعلن فريق تطوير Vivaldi اليوم عن ميزة جديدة لطيفة في متصفحهم المبتكر. يحصل Vivaldi على نظام تحديث 'دلتا' على نظام التشغيل Windows لحفظ عرض النطاق الترددي الخاص بك وتسريع إجراءات الترقية. تستخدم لقطة اليوم ، Vivaldi 1.5.627.3 ، بالفعل نظام التحديث الجديد. إذا قمت بتثبيت الإصدار التطويري السابق ، وهو 1.5.626.8 ، إذن
كيفية استخدام أوبر
كيفية استخدام أوبر
أحدثت أوبر ثورة في وسائل النقل العام. من خلال بضع نقرات سريعة على الشاشة ، يمكنك حجز رحلتك الخاصة عبر المدينة. ومع ذلك ، إذا لم تكن قد جربت أوبر من قبل ، فقد تشعر بالحيرة قليلاً بشأن كيفية القيام بذلك
هل يمكنك الحصول على Siri لنظام Android؟
هل يمكنك الحصول على Siri لنظام Android؟
لا يوجد Siri للهواتف الذكية التي تعمل بنظام Android. يمكنك استخدام Alexa أو Google Assistant أو بديل آخر للأوامر الصوتية إذا لم يكن لديك iPhone.
كيفية البحث عن مقاهي الإنترنت واستخدامها
كيفية البحث عن مقاهي الإنترنت واستخدامها
توفر مقاهي الإنترنت إمكانية الوصول إلى الإنترنت للسكان المحليين والمسافرين، مقابل رسوم عادةً. فيما يلي كيفية العثور على مقاهي الإنترنت القريبة والنصائح عند استخدامها.