Wireshark هو المحلل الرائد لحركة مرور الشبكة مفتوح المصدر، ويُستخدم لالتقاط الحزم وفحصها في الوقت الفعلي. تدعم الأداة أكثر من ألفي بروتوكول شبكة وتعمل على جميع المنصات الرئيسية. وفقًا لدليل مستخدم Wireshark (2026)، تُستخدم الأداة لتشخيص الشبكات وتصحيح أخطاء واجهات API وتحليل الأمان في تطوير تطبيقات الجوال والويب.
أهم النقاط
Wireshark هو برنامج مفتوح المصدر (GPLv2) يلتقط حزم البيانات التي تمر عبر واجهة شبكة الكمبيوتر. يعتمد على مكتبة libpcap (Unix) أو Npcap (Windows) للالتقاط على مستوى طبقة الارتباط لنموذج OSI.
في الوضع العادي تستقبل بطاقة الشبكة الإطارات الموجهة إلى عنوان MAC الخاص بها فقط. يقوم Wireshark بتحويل الواجهة إلى وضع promiscuous (غير المميّز)، حيث يعالج النظام جميع الإطارات المارة بغض النظر عن المرسل إليه. تُنقل البيانات الملتقطة إلى النواة عبر raw socket، ثم تنسخها مكتبة libpcap إلى مساحة المستخدم للتحليل.
يستخدم Wireshark بنية معيارية: كل بروتوكول يُنفَّذ كمحلل dissector مستقل — إضافة plugin تقوم بتحليل البيانات الثنائية وعرضها بشكل منظم. اعتبارًا من عام 2026، تم تنفيذ محللات لنحو 2 874 بروتوكولًا، بما في ذلك HTTP/2 وQUIC وgRPC وMQTT. تعمل المحللات عبر نظام شجرة البروتوكولات — يتم تحليل كل حزمة طبقة بطبقة: من إطار Ethernet حتى طبقة التطبيق.
// مثال على محلل بسيط لبروتوكول مخصص
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data) {
proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
tvb, 0, tvb_captured_length(tvb), ENC_NA);
return 0;
}
تنقسم الواجهة الرسومية لـ Wireshark إلى ثلاث لوحات: قائمة الحزم (packet list)، وتفاصيل البروتوكولات (packet details)، وتمثيل hex السداسي (packet bytes). تتحدث كل لوحة في الوقت الفعلي وتدعم التنقل التفاعلي — النقر على سطر حزمة يفتح بنيتها الكاملة.
تقرأ الأداة ملفات الالتقاط بصيغ pcap وpcapng وsnoop وNetMon. يمكن التصدير إلى JSON وXML وCSV ونص عادي. من بين البروتوكولات الرئيسية لطبقة التطبيق — HTTP/HTTPS وDNS وDHCP وTCP وUDP وTLS وQUIC وWebSocket وMQTT وAMQP وProtobuf. لتطوير الجوال، من المهم بشكل خاص دعم gRPC وHTTP/2 مع تعدد إرسال التدفقات.
تشمل الأدوات المدمجة Follow Stream (إعادة بناء الحوار الكامل TCP/UDP/TLS)، وIO Graph (مخطط الإنتاجية)، وإحصائيات المحادثات (Conversations)، والتسلسل الهرمي للبروتوكولات (Protocol Hierarchy). تعمل وظيفة Flow Graph على تصور تسلسل الحزم بين العقد، مما يسهل العثور على أسباب التأخير عند تصحيح أخطاء التفاعل بين العميل والخادم.
يبدأ تشغيل الالتقاط باختيار واجهة الشبكة — Ethernet أو Wi-Fi أو Bluetooth PAN أو Loopback. على Windows قد يلزم تثبيت Npcap في وضع WinPcap API Compatible Mode. للالتقاط على أجهزة الجوال يُستخدم Remote Packet Capture عبر نفق SSH.
على جهاز Android يتم التقاط حركة المرور عبر tcpdump أو PCAPdroid مع نقل الملف لاحقًا إلى كمبيوتر العمل. الأمر للالتقاط عن بُعد عبر ADB:
# التقاط حركة المرور على Android عبر ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# النسخ إلى الكمبيوتر
adb pull /sdcard/capture.pcap .
على Windows لا تمر حركة localhost (127.0.0.1) عبر الواجهة المادية، لذلك لا يراها Wireshark مباشرة. الحل هو تثبيت Npcap مع خيار Loopback Support أو إعادة توجيه الحركة عبر RawCap. على Linux وmacOS يتم التقاط واجهة loopback (lo) دون إعدادات إضافية.
يوفر Wireshark نوعين من الفلاتر: capture filters (تُطبق قبل الالتقاط، على مستوى libpcap) وdisplay filters (تُطبق على البيانات الملتقطة بالفعل). تستخدم capture filters صيغة BPF (Berkeley Packet Filter)، بينما تستخدم display filters لغة Wireshark الخاصة مع إكمال تلقائي.
تُكتب فلاتر BPF بصيغة tcpdump وتُعمل في النواة، مما يقلل فقدان الحزم تحت الحمل العالي. أمثلة على الفلاتر:
| الفلتر | الوظيفة |
|---|---|
| tcp port 80 | حركة HTTP فقط على المنفذ القياسي |
| host 192.168.1.1 | الحزم من مضيف محدد |
| not arp | جميع الحزم باستثناء طلبات ARP |
تُطبق display filters بعد الالتقاط وتدعم شروطًا معقدة مع العوامل المنطقية and وor وnot. مثال: http.request.method == "POST" and ip.src == 192.168.0.100 سيفلتر فقط طلبات POST من عنوان IP محدد. يمكن حفظ الفلاتر كقائمة مفضلة لإعادة استخدامها.
تُعرض حركة HTTP في Wireshark بشكل قابل للقراءة: طريقة الطلب وعنوان URI والرؤوس وجسم الاستجابة. تجمع وظيفة Follow TCP Stream الحوار الكامل بين العميل والخادم في نافذة واحدة. بالنسبة لـ HTTPS يلزم فك تشفير جلسات TLS، لأن المحتوى مشفر.
يدعم متصفحا Chrome وFirefox متغير البيئة SSLKEYLOGFILE الذي يكتب مفاتيح جلسة TLS في ملف نصي. يستخدم Wireshark هذا الملف لفك تشفير السجلات. يتم الإعداد عبر Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.
# تشغيل Chrome مع تسجيل مفاتيح TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .
# بعد الالتقاط حدد المسار في Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename
يستخدم gRPC HTTP/2 كنقل وProtobuf لتسلسل البيانات. يقوم Wireshark بفك تشفير رسائل gRPC إذا تم توفير ملف .proto مع تعريفات البنى. يربط محلل Protobuf الحقول الثنائية بالأسماء من ملف proto، وهو أمر بالغ الأهمية عند تصحيح أخطاء بنية الخدمات المصغرة.
يتطلب تصحيح أخطاء الجوال عبر Wireshark توجيه حركة الجهاز إلى الكمبيوتر. الطريقة الأكثر موثوقية هي إنشاء نقطة وصول Wi-Fi على اللابتوب وإعادة توجيه الحركة عبر NAT. على Android يتوفر أيضًا أسلوب VPN مع تطبيق PCAPdroid دون صلاحيات root.
يقوم PCAPdroid بإنشاء خدمة VPN محلية تعيد توجيه حركة التطبيقات إلى Wireshark عبر تدفق UDP. لا يتطلب التطبيق صلاحيات root ويدعم التصفية حسب العمليات الفردية. تُفتح ملفات pcap الناتجة في Wireshark للتحليل الكامل.
# استقبال حركة المرور من PCAPdroid على الكمبيوتر
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap
Wireshark أداة عالمية، لكن بالنسبة لمهام محددة توجد حلول أكثر تخصصًا. tcpdump أكثر فاعلية للالتقاط على الخادم بدون رسوميات، وCharles Proxy أكثر ملاءمة لتحليل حركة HTTPS، أما Fiddler فهو مناسب لفحص حركة الويب مع إمكانية تعديل الطلبات أثناء التنفيذ.
يعمل Charles Proxy كخادم بروكسي وسيط مع إمكانية اعتراض HTTPS عبر شهادة SSL خاصة به. على عكس Wireshark، لا يتطلب Charles إعداد SSLKEYLOGFILE ويمكنه ليس فقط عرض الحركة بل تعديلها أيضًا — استبدال الاستجابات ومحاكاة التأخيرات وإعادة الطلبات.
Fiddler أداة بروكسي أخرى شائعة في نظام .NET البيئي. يوفر محرر طلبات مدمجًا ودعم AutoResponder للنماذج الوهمية mocks وcomposer لإنشاء طلبات مخصصة. Fiddler أنسب لتحليل حركة ويب المتصفح، بينما Wireshark أنسب للتحليل الشبكي منخفض المستوى.
| الأداة | النوع | HTTPS بدون مفاتيح | تعديل الحركة |
|---|---|---|---|
| Wireshark | متلصص | لا (يحتاج SSLKEYLOGFILE) | عرض فقط |
| Charles | بروكسي | نعم (شهادة مخصصة) | نعم |
| Fiddler | بروكسي | نعم (شهادة مخصصة) | نعم |
| tcpdump | متلصص | لا | عرض فقط |
يتطلب Wireshark فهم المبادئ الأساسية لالتقاط حركة المرور. أحد السيناريوهات الشائعة هو البحث عن مصدر التأخيرات في تطبيق الجوال عبر فلتر tcp.analysis.ack_rtt. للبحث عن طلبات HTTP البطيئة استخدم الشرط http.time أكبر من 1.
للبحث عن طلبات HTTP البطيئة قم بتصفية http.time أكبر من 1 — سيُظهر Wireshark الطلبات ذات زمن الاستجابة أكثر من ثانية واحدة. ادمج مع ip.addr لتحليل خادم محدد. سيعرض IO Graph بفاصل زمني ثانية واحدة قمم الحمل بوضوح.
يدعم Wireshark التصدير إلى CSV وJSON وXML عبر قائمة File. للتحليل التلقائي استخدم tshark — النسخة النصية التي تعمل في مسارات CI/CD. يدعم Tshark نفس الفلاتر وصيغ الإخراج مثل النسخة الرسومية.
يتطلب Wireshark فهم المبادئ الأساسية لالتقاط حركة المرور. أحد السيناريوهات الشائعة هو البحث عن مصدر التأخيرات في تطبيق الجوال عبر فلتر tcp.analysis.ack_rtt. للبحث عن طلبات HTTP البطيئة استخدم الشرط http.time أكبر من 1.
للبحث عن طلبات HTTP البطيئة قم بتصفية http.time أكبر من 1 — سيُظهر Wireshark الطلبات ذات زمن الاستجابة أكثر من ثانية واحدة. ادمج مع ip.addr لتحليل خادم محدد. سيعرض IO Graph بفاصل زمني ثانية واحدة قمم الحمل بوضوح.
يدعم Wireshark التصدير إلى CSV وJSON وXML عبر قائمة File. للتحليل التلقائي استخدم tshark — النسخة النصية التي تعمل في مسارات CI/CD. يدعم Tshark نفس الفلاتر وصيغ الإخراج مثل النسخة الرسومية.
الأسئلة الشائعة
يوفر Wireshark واجهة رسومية مع تصور الحزم وفلاتر مدمجة وإحصائيات. tcpdump أداة سطر أوامر بدون واجهة رسومية، مناسبة للالتقاط على الخادم عبر SSH. يمكن لـ Wireshark قراءة ملفات tcpdump والعكس.
لفك التشفير يلزم ملف مفاتيح جلسة TLS (SSLKEYLOGFILE). يقوم Chrome وFirefox بتصدير المفاتيح عند التشغيل مع متغير البيئة. يُشار إلى مسار الملف في إعدادات Protocols → TLS في Wireshark.
لا تمر حركة loopback على Windows عبر برنامج تشغيل Npcap افتراضيًا. الحل هو تثبيت Npcap مع تفعيل خيار Loopback Support أو استخدام الأداة RawCap لالتقاط الحركة المحلية.
نعم، عبر توجيه حركة المرور إلى الكمبيوتر. يدعم Android الالتقاط عبر PCAPdroid (بدون root) أو tcpdump (مع root). يتطلب iOS RVI (Remote Virtual Interface) عبر macOS أو jailbreak للالتقاط.
يبحث display filter frame contains عن سلسلة أو تسلسل سداسي في الحزمة بأكملها. مثال: frame contains "password" سيجد الحزم التي تحتوي على سلسلة password في أي حقل. للبحث الدقيق حسب حقل استخدم http.request.uri contains "api".
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا