لست بحاجة إلى تثبيت أي شيء للحصول على صورة حقيقية وحالية عمّا يتحدث معه جهاز الـ Mac الخاص بك. كل أداة في هذا التمرين تأتي مثبتة مسبقًا مع macOS. لا تتطلب أي منها أن تثق بطرف ثالث ببياناتك، وتستغرق الأدوات الست معًا نحو عشر دقائق بمجرد أن تعرف الأوامر. وما لن تفعله، وهذا مهم، هو إخبارك أي من تلك الاتصالات سليم وأيها ليس كذلك — فهذا يتطلب سياقًا إضافيًا، وفي النهاية سنكون صريحين بشأن أين تتوقف هذه الأدوات.
1. lsof — كل اتصال مفتوح، في هذه اللحظة
في أنظمة Unix، مقبس الشبكة (socket) هو ملف، وأداة lsof (اختصار list open files، أي عرض الملفات المفتوحة) تسردها. يصف دليل الاستخدام في macOS الخيار -i بأنه يختار الملفات التي يطابق عنوانها على الإنترنت مواصفة معينة — وبلا تحديد، يعرض كل مقبس على الإنترنت. أضف -n لتجاوز تحويل العناوين إلى أسماء مضيفين و-P لتجاوز تحويل المنافذ إلى أسماء خدمات؛ كلاهما يجعل الأمر أسرع والمخرجات دقيقة بدل أن تكون تقريبية.
sudo lsof -i -n -P
# example output, trimmed to a few representative lines
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Mail 612 alice 9u IPv4 0x... 0t0 TCP 192.168.1.10:54321->17.57.145.13:993 (ESTABLISHED)
Slack 980 alice 22u IPv4 0x... 0t0 TCP 192.168.1.10:54400->35.186.224.25:443 (ESTABLISHED)
mDNSResp 88 root 4u IPv4 0x... 0t0 UDP *:5353اقرأ من اليسار إلى اليمين: اسم العملية ومعرّفها (PID)، العنوان المحلي والمنفذ، الرمز -> ثم العنوان والمنفذ البعيدين، وحالة الاتصال. تعني ESTABLISHED وجود اتصال نشط ثنائي الاتجاه الآن. إن شغّلت الأمر دون sudo سترى عملياتك الخاصة فقط؛ أما العمليات المملوكة لحساب root فتحتاج إليه. ما لا يمكن لهذه الأداة إخبارك به: lsof هي لقطة للحظة ضغطك على مفتاح الإدخال. أي اتصال فُتح، وأرسل بضعة كيلوبايتات، ثم أُغلق قبل نصف ثانية من تشغيلك الأمر لن يظهر ببساطة — عليك تشغيله بشكل متكرر، أو الانتقال إلى الأداة التالية، لالتقاط ذلك.
2. nettop — العرض نفسه، لكن حيًا
nettop هي النسخة الحية من الفكرة نفسها. يصفها دليل الاستخدام بأنها تعرض «قائمة من المقابس أو المسارات» مع إحصاءات تُحدَّث دوريًا. يحوّلها الخيار -m route من سرد المقابس إلى عرض جدول التوجيه؛ ويقصر الخياران -m tcp أو -m udp العرض على بروتوكول واحد.
nettop -m route
# interactive; press q to quit, or use -l N to print N samples and exit
# example output, trimmed
time interface state bytes_in bytes_out
23:41:02.123 Mail.612 en0 Established 4.2K 1.1K
23:41:02.123 Slack.980 en0 Established 18.6K 6.4Kأضف -l 5 لالتقاط خمس عيّنات ثم الخروج بدلًا من الإبقاء على جلسة تفاعلية، وهذا مفيد إن أردت تمرير المخرجات إلى مكان آخر. تعالج nettop مشكلة اللقطة الواحدة في lsof — إذ يمكنك مشاهدة اتصال يظهر وينقل بيانات ثم يُغلق — لكنها ترث السقف نفسه: اسم عملية ومعرّف، لا شيء عن مَن وقّع الملف التنفيذي، ولا ذاكرة بعد إغلاق الطرفية.
3. log stream — ما يقوله النظام نفسه عن الشبكة
يحتفظ macOS بسجل موحّد ومنظَّم لما تفعله كل عملية، وتتيح لك log stream مشاهدته حيًا، مع تصفية. يصف دليل الاستخدام الخيار --predicate بأنه يصفّي المُدخلات باستخدام عبارات على طراز NSPredicate مقابل النظام الفرعي والفئة والعملية ومحتوى الرسالة.
log stream --predicate 'eventMessage contains "network" or subsystem == "com.apple.network"' --info
# live stream; Ctrl-C to stop. Example line, trimmed:
2026-09-14 23:41:05.001 process=nesessionmanager subsystem=com.apple.network "TCP Connection ... state changed to Ready"هذه أقل الأدوات الست سهولة — فحجم المخرجات كبير وصياغة عبارة التصفية (predicate) لها منحنى تعلّم — لكنها أيضًا الوحيدة التي تُظهر تغيّرات حالة الشبكة على مستوى النظام وأحداث دورة حياة الاتصال لحظة وقوعها، بلغة إنجليزية شبه واضحة، ومُصنَّفة حسب النظام الفرعي المسؤول. عاملها كشيء تُمرّره عبر grep لا شيء تقرأه سطرًا سطرًا: مرّرها عبر grep بحثًا عن اسم عملية تهمّك، أو كلمة مثل "Wi-Fi" أو "VPN".
4. scutil --dns وdig — ما الذي يحلّه جهاز الـ Mac فعليًا
قبل حدوث أي اتصال، يجري عادة استعلام DNS. تقوم scutil --dns، وفق دليل استخدامها، بـ«الإبلاغ عن إعداد DNS الحالي»: أي محلِّلات (resolvers) مُعدَّة، وأيها الافتراضي، وأيها ينطبق فقط على نطاقات محددة (DNS المقسَّم، الشائع في شبكات VPN).
scutil --dns
# example output, trimmed
DNS configuration
resolver #1
nameserver[0] : 192.168.1.1
if_index : 12 (en0)
flags : Request A records, Request AAAA records
reach : 0x00020002 (Reachable,Directly Reachable Address)تجيب dig عن سؤال واحد مباشرة: إلى أين يتم حل هذا الاسم، الآن. يصفها دليل استخدامها بأنها «أداة مرنة لاستجواب خواديم أسماء DNS» تُقدَّر لـ«مرونتها وسهولة استخدامها ووضوح مخرجاتها».
dig example.com +short
# example output
93.184.216.34لا تخبرك أي من الأداتين أي تطبيق أطلق الاستعلام أو ما حدث بعده — فـ DNS يمنحك فقط العنوان الذي يوشك تطبيق على الاتصال به (أو اتصل به بالفعل)؛ أما الاتصال نفسه فتُظهره لك lsof أو nettop أو سجل جدار حماية.
5. tcpdump — الحقيقة الأساسية، والأداة التي تحتاج sudo
كل ما سبق يقرأ حالة يحتفظ بها نظام التشغيل أصلًا. أما tcpdump فمختلفة: فهي تلتقط الحزم مباشرة من واجهة الشبكة، ولهذا يوضح توثيقها الأمر بصراحة — «قد تتطلب قراءة الحزم من واجهة شبكة صلاحيات خاصة» — وعمليًا، يعني ذلك sudo على macOS. استخدم -i لاختيار الواجهة، و-n لإبقاء العناوين رقمية، وعبارة تصفية مثل port 53 لعزل حركة DNS:
sudo tcpdump -i en0 -n port 53
# example output, trimmed
23:41:10.221331 IP 192.168.1.10.54812 > 192.168.1.1.53: 41213+ A? example.com. (30)
23:41:10.244109 IP 192.168.1.1.53 > 192.168.1.10.54812: 41213 1/0/0 A 93.184.216.34 (46)النمط الذي يجب ملاحظته: استعلام يخرج على المنفذ 53 يتبعه فورًا رد يعود. إن شغّلت dig في طرفية بينما تعمل tcpdump في أخرى، يمكنك مشاهدة الاستعلام والرد الدقيقين اللذين أنتجهما أمرك بنفسك — وهذه طريقة جيدة لتصدّق فعليًا ما تقوله أدلة الاستخدام بدل أخذها على الثقة.
أداة سابعة مجانية: مراقب النشاط (Activity Monitor)
يستحق الأمر ذكر الخيار الرسومي الوحيد في هذه القائمة، فليس كل شيء يحتاج إلى طرفية. تمنحك علامة التبويب Network في مراقب النشاط إجماليات — البيانات المُرسلة والمستقبَلة لكل عملية، ورسمًا بيانيًا حيًا لمعدل النقل — وهي المحطة الأولى الصحيحة عندما «يستهلك شيء ما نطاقًا تردديًا كبيرًا ولا أعرف ما هو». وهي أيضًا أوضح توضيح للسقف الذي تشترك فيه كل أداة في هذا المقال: يمكنها إخبارك أن عملية مساعدة نقلت جيجابايتين طوال الليل، لكن ليس لديها عمود لوجهة هذين الجيجابايتين. الحجم والوجهة سؤالان مختلفان، ويجيب عنهما macOS بأداتين مختلفتين.
جمع العشر دقائق معًا
sudo lsof -i -n -P— احصل على القائمة الحالية للمقابس المفتوحة، بمرور واحد، في ثلاثين ثانية.nettop -m route -l 5— التقط بضع عيّنات حية لالتقاط ما فاتت lsof رؤيته في لقطتها الواحدة.scutil --dns— تأكد من المحلِّل (resolver) الذي تستخدمه فعليًا، خاصة إن كنت على VPN أو Wi-Fi عام.dig <name> +short، على أي شيء غير مألوف من الخطوة الأولى، لترى إلى أين يتم حله حاليًا.sudo tcpdump -i en0 -n port 53، لستين ثانية، لمشاهدة حركة DNS الخام أثناء قيام التطبيقات بأعمالها.log stream --predicateمع تمرير عبر grep بكلمة مفتاحية، إن أثار أي مما سبق سؤالًا لم تجب عنه الخطوات الخمس السابقة.
مثال عملي
لنفترض أن الخطوة الأولى أظهرت عملية اسمها helperd تحتفظ باتصال مفتوح إلى عنوان لا تعرفه. لا تتوقف عند هذا الحد. شغّل dig -x <العنوان> لإجراء بحث عكسي — لن يُحل دائمًا إلى شيء مقروء، لكن حين يحدث ذلك، فإن اسم مضيف مثل ads.example-cdn.net يخبرك في خمس ثوانٍ أكثر مما سيخبرك به العنوان الرقمي الخام أبدًا. شغّل nettop -m tcp -l 3 وراقب ما إذا كان الاتصال نفسه لا يزال مفتوحًا بعد بضع ثوانٍ، وما إذا كانت بايتات تتحرك فعليًا عبره أم أنه خامل. إن كان خاملًا ويُعاد فتحه على فترة ثابتة، فهذا شكل تسجيل دخول دوري لا نقل لمرة واحدة — يستحق التذكر، لا القلق التلقائي بالضرورة، لأن أدوات التحقق من التحديثات العادية تتصرف بالطريقة نفسها. ثم تحقق من scutil --dns للتأكد من أن المحلِّل الذي أنتج العنوان الذي اتصلت به helperd هو المحلِّل الذي توقعته، خاصة إن كنت على شبكة Wi-Fi لشخص آخر. خمسة أوامر، وعملية واحدة، وتكون قد انتقلت من «لا أعرف هذا» إلى «إليك بالضبط ما أعرفه وما لا أعرفه عنه» — وهذا هو الهدف الفعلي لتدقيق كهذا، أكثر من إصدار حكم بالجيد أو السيئ.
ما لن تخبرك به أي من هذه الأدوات
شغّل الأدوات الست جميعًا وستبقى أمامك ثلاث فجوات حقيقية. أولًا، الهوية بما يتجاوز اسم العملية: لا شيء هنا يتحقق مما إذا كان الملف التنفيذي المسمى «Mail» هو تطبيق Mail من Apple أم شيء غيّر اسمه، أو حتى ما إذا كان موقّعًا رقميًا من الأساس — وهذا بحث منفصل عبر codesign وspctl. ثانيًا، الذاكرة: بمجرد إغلاق نافذة الطرفية، يختفي كل ما تعلمته؛ ولا يوجد سجل لـ«ما اتصل به جهاز الـ Mac الأربعاء الماضي» ما لم تبنِ واحدًا بنفسك. ثالثًا، الحكم: لا تملك أي من هذه الأدوات رأيًا فيما إذا كان اتصال ما متوقعًا. تطبيق لتدوين الملاحظات يتصل بعنوان لم يستخدمه من قبل يبدو تمامًا مثل اتصاله بخادم المزامنة المعتاد في lsof — والتمييز بين الحالتين تمييز أنماط عليك أن تجلبه بنفسك، أو أن تجلبه لك أداة أخرى.
دور FireAI وHisnLabs
Everything in this lab is free and built into macOS, and none of it names the process behind a connection or remembers it after the terminal closes — which is the specific, narrow gap FireAI’s per-app rules and connection history are built to close.
FireAI هو منتج HisnLabs نفسها: جدار حماية بذكاء اصطناعي يعمل على جهاز Mac مباشرة. يعرض بلغة واضحة كل اتصال تجريه تطبيقاتك، ويترك لك القرار فيما يخرج من جهازك — ذكاؤه الاصطناعي يعمل محليًا، فلا يُرسَل ترافيكك إلينا ولا إلى أي جهة أخرى أبدًا. فريق أبحاث الأمن في HisnLabs هو من يحافظ على دقة هذه القرارات: يصنّف النطاقات بين قياس عن بُعد عادي وخدمة حقيقية، ويتتبّع بلد وشبكة كل اتصال، ويدرّب النموذج المحلي (ميزة Autopilot) على حركة اتصال حقيقية، دون أن يغادر أي شيء جهاز Mac.
يمكنك الاطلاع على القرارات التقنية وراء ذلك، أو تجربة FireAI لمدة 17 يومًا، على FireAI من HisnLabs.
