
تدقيق أمان الشبكة المحلية مع EOL و CVE وهوية الأجهزة وتقارير HTML
تدقيق أمن الشبكات للبشر — مدعوم بـ nmap، مُصمم للجميع.
الموقع الإلكتروني: sunsetscan.com
SunsetScan هي أداة تدقيق أمني للشبكة المحلية مخصصة لأصحاب الشبكات المنزلية وموظفي تكنولوجيا المعلومات الذين يرغبون في الاستفادة من عمق nmap دون الحاجة لتعلم بناء جملته. وجه الأداة نحو شبكتك وسوف تجد كل جهاز نشط، وتحدد البرامج قيد التشغيل، وتتحقق من قواعد بيانات الثغرات المعروفة وسجلات نهاية العمر الافتراضي، وتستكشف واجهات الويب بحثًا عن نقاط ضعف شائعة، وتقوم اختياريًا بتدقيق كلمات المرور الافتراضية للمصنعين دون خطر قفل الحسابات، وتنتج تقرير HTML نظيفًا مع شروحات بلغة إنجليزية بسيطة وخطوات مرقمة لإصلاح كل اكتشاف. الأداة هي للقراءة فقط تمامًا وغير ضارة — لا يتم تعديل أي شيء على شبكتك أبدًا.
لماذا لينكس؟ تعتمد SunsetScan على raw sockets (مسح ARP، التقاط الحزم السلبي)، وواجهات برمجة خاصة بلينكس (
/proc،ip route)، وفحوص الصلاحيات (os.geteuid()) غير المتوفرة على ويندوز الأصلي. يوفر WSL2 نواة لينكس كاملة وهو المسار الموصى به لمستخدمي ويندوز.
تأتي SunsetScan مع مثبت يعتني بأدوات النظام (nmap، masscan، git، python3-venv)، ويُنشئ بيئة افتراضية بايثون محلية للمشروع، ويُثبت جميع تبعيات بايثون داخلها. لن يُطلب منك أبدًا تنفيذ pip install كجذر — هذا مهم على Debian/Pi OS الحديثة، انظر لماذا بيئة افتراضية؟ أدناه.
Debian، Ubuntu، Raspberry Pi OS (Bookworm والأحدث)، Linux Mint، Pop!_OS.
Fedora، RHEL، CentOS، Rocky، Alma، Arch، Manjaro، openSUSE، macOS.
موصى بها لـ Debian، Ubuntu، Raspberry Pi OS، Linux Mint، وPop!_OS:```bash curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb.sha256 sha256sum -c sunsetscan_2.1.0-1_all.deb.sha256 sudo apt install ./sunsetscan_2.1.0-1_all.deb sunsetscan --version
#### 2. إقلاع من سطر واحد
يستنسخ المستودع إلى `~/sunsetscan` ويشغل المثبت:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
هل تريده في مكان آخر؟ عيّن INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **ملاحظة حول `curl | bash`**: إنها طريقة مريحة ولكنها تعني تشغيل نص برمجي لم تقرأه. إذا كنت تفضل الفحص أولاً، فاستخدم الخيار 3 أو 4.
#### 3. استنساخ وتثبيت```bash
git clone https://github.com/NoCoderRandom/sunsetscan.git
cd sunsetscan
./install.sh
sudo apt install -y nmap masscan git python3 python3-venv python3-pip libpcap-dev build-essential avahi-utils git clone https://github.com/NoCoderRandom/sunsetscan.git && cd sunsetscan python3 -m venv venv && ./venv/bin/pip install -r requirements.txt ./sunsetscan --version
(استبدل مدير الحزم الخاص بتوزيعتك بـ `apt` — `dnf`، `pacman`، `zypper`، أو `brew`. حزمة avahi هي `avahi-tools` على Fedora/RHEL، و`avahi` على Arch، و`avahi-utils` على openSUSE، وليست مطلوبة على macOS.)
### بعد التثبيت — التشغيل الأول```bash
./sunsetscan --setup # download EOL/CVE/credential databases (once)
sudo ./sunsetscan --instant # ARP-only inventory of your local subnet
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
The ./sunsetscan launcher auto-activates the venv — you don't need to source venv/bin/activate ever. Use sudo for scans that need raw sockets, but run --setup, --download, and --update-cache as your normal user so cache files stay writable from the TUI.
إعادة تشغيل ./install.sh آمنة ومتكررة النتائج — فهي تكتشف المكونات الموجودة وتعيد استخدامها.
تأتي توزيعات دبيان الحديثة (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) مع تطبيق PEP 668. وهذا يجعل pip install يفشل عند تشغيله كجذر (root) ضد بايثون النظام:```
error: externally-managed-environment
× This environment is externally managed
اعتمادان من اعتماديات SunsetScan (خاصة `pysnmp` v6) يحتاجان إصدارات أحدث مما توفره مستودعات apt، لذا فإن التثبيت الخالص عبر apt غير ممكن. حل المثبِّت هو الحل القياسي: تثبيت أدوات النظام (nmap, masscan, libpcap, avahi-utils) عبر apt، ووضع اعتماديات Python الخاصة بـ SunsetScan في دليل `./venv` محلي للمشروع. لا يتم المساس بأي شيء على مستوى النظام، لذا فإن PEP 668 لا ينطبق، وإلغاء تثبيت SunsetScan يتم فقط عبر `rm -rf ~/sunsetscan`.
### اختياري: إبقاء SunsetScan قيد التشغيل في الخلفية
يمكن أن يستغرق التقييم الكامل لشبكة فرعية بحجم /24 على Raspberry Pi من 10 إلى 30 دقيقة. استخدم `tmux` أو `screen` ليظل المسح قائماً عند انقطاع اتصال SSH:```bash
sudo apt install -y tmux
tmux new -s sunsetscan
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
# Ctrl+B then D to detach. "tmux attach -t sunsetscan" to come back later.
cd ~/sunsetscan git pull ./install.sh # idempotent — picks up any new dependencies
### إلغاء التثبيت```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
ويندوز غير مدعومة مباشرة (يحتاج SunsetScan إلى مقابس خام (raw sockets)، /proc، وos.geteuid)، لكن WSL2 يعمل بشكل جيد:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
أعد التشغيل، ثم افتح **Ubuntu** من قائمة "ابدأ"، واتبع عملية التثبيت القياسية أعلاه. يستخدم WSL2 محول شبكة افتراضي — مرر شبكتك الحقيقية باستخدام `--target` إذا كان الاكتشاف التلقائي يختار الخطأ.
---
## المتطلبات
| المتطلب | الحد الأدنى | ملاحظات |
|---|---|---|
| **Python** | 3.9+ | يوصى بـ 3.12 |
| **nmap** | أي إصدار حديث | يجب أن يكون في مسار PATH للنظام |
| **OS** | لينكس (أصلي أو WSL2) | انظر [دعم المنصة](#platform-support) |
| **masscan** | أي | اختياري — اكتشاف منافذ أسرع |
| **avahi-utils** | أي | اختياري — يوفر `avahi-browse`، يُستخدم لاكتشاف موثوق لأجهزة Apple / Bonjour / Sleep-Proxy عبر mDNS. يتراجع إلى `zeroconf` بايثون إذا كان غائبًا. |
| **git** | أي | اختياري — يُستخدم مع `--setup` و `--update` |
| **الصلاحيات** | مستخدم عادي | صلاحية الجذر/سودو مطلوبة لملفات تعريف FULL، STEALTH، SMB، اكتشاف ARP، والالتقاط السلبي |
---
## بداية سريعة```bash
# Interactive mode (recommended for first-time users)
sudo python3 sunsetscan.py -i
# Full security assessment with HTML report
sudo python3 sunsetscan.py --full-assessment --target 192.168.1.0/24
# Quick scan of your network
python3 sunsetscan.py --target 192.168.1.0/24
# IoT device scan (cameras, routers, smart devices)
python3 sunsetscan.py --target 192.168.1.0/24 --profile IOT
# Quick device inventory (no security checks)
python3 sunsetscan.py --identify --target 192.168.1.0/24
# Download all data modules for extended detection
python3 sunsetscan.py --download all
يقوم SunsetScan بتشغيل 12 وحدة فحص أماني أثناء التقييم الكامل:
hardware-eol-home، بينما تتوفر ملفات تعريف المكتب والمؤسسات والصناعية ومزود الخدمة والكامل لمسوحات أوسع.--setup و --update-cache و --download. تعمل المسوحات دون أي اتصال بالإنترنت طالما أن المخابئ ممتلئة.--identify تتجاوز فحوصات الأمانيتضمن SunsetScan وحدات بيانات قابلة للتنزيل وملفات تعريف نهاية عمر الأجهزة التي توسع قدرات الكشف:
تم الآن تقسيم قاعدة بيانات دورة حياة الأجهزة إلى ملفات تعريف ذكية قابلة للتنزيل: hardware-eol-home هو التثبيت الافتراضي، بينما يوفر hardware-eol-full تغطية كاملة. تحتوي النسخة الكاملة الأساسية حاليًا على 64,245 سجلاً عبر 122 بائعًا، لكن المستخدمين المنزليين يحتاجون فقط إلى ملف التعريف المنزلي الأصغر.
### الكشف عن الأجهزة المارقة
- احفظ لقطة لشبكتك كخط أساس موثوق
- الفحوصات المستقبلية تضع علامة تلقائيًا على عناوين MAC غير المعروفة غير الموجودة في خط الأساس
- يكتشف الأجهزة المعروفة على عناوين IP غير متوقعة
### تسجيل المخاطر
كل جهاز يحصل على درجة مخاطرة (0-100) بناءً على شدة وعدد النتائج:
| النتيجة | النطاق |
|---|---|
| 0-10 | مخاطرة ضئيلة |
| 11-30 | مخاطرة منخفضة |
| 31-60 | مخاطرة متوسطة |
| 61-80 | مخاطرة عالية |
| 81-100 | مخاطرة حرجة |
### التقارير
- **تقرير HTML احترافي** — لوحة تحكم بالشدة، أقسام لكل مضيف، بطاقات نتائج مع شروحات باللغة الإنجليزية المبسطة، توصيات ذات أولوية
- **تصدير JSON** — مخرجات منظمة قابلة للقراءة آليًا
- التقارير مكتفية ذاتيًا بالكامل — ملف HTML واحد، لا تبعيات خارجية
- الملفات الضيقة مثل SMB تظل تبقي المضيفات المكتشفة مرئية في التقرير حتى عند عدم فتح منافذ خدمة مطابقة
- يتم فصل الفحوصات على مستوى الشبكة مثل DNS و UPnP وملاحظات وقت التشغيل عن نتائج كل جهاز؛ يتم عرض درجات مخاطرة الأجهزة فقط للمضيفات الفعلية
- جميع النتائج ملونة حسب الكود: حرجة، عالية، متوسطة، منخفضة، معلومات
### سجل الفحص والمقارنة
- كل فحص يتم حفظه تلقائيًا كصورة JSON مضغوطة بصيغة gzip
- عرض الفحوصات السابقة باستخدام `--history`
- مقارنة أي فحصين باستخدام `--diff` لرؤية المضيفات الجديدة، المنافذ المغلقة، النتائج الجديدة/المحلولة
- مقارنة مع فحص من N يومًا مضت باستخدام `--diff --since N`
- يحتفظ بالسجل لمدة 90 يومًا افتراضيًا
### واجهة المستخدم
- **الوضع التفاعلي الموجه** (`-i`) — قوائم متعددة المستويات للفحص، التحليل، التصدير، الوحدات
- **القائمة على الطراز القديم** — تبدأ عند التشغيل بدون وسائط
- وضع CLI المباشر — قابل للبرمجة وصديق للأتمتة
- إخراج طرفية غني بالألوان مع أشرطة تقدم، مؤشرات دوارة، ولوحات ملخص
---
## جميع علامات CLI
| العلامة | الوصف | الجذر |
|---|---|---|
| `--target TARGET` | IP، نطاق CIDR، اسم مضيف، أو نطاق للفحص | لا |
| `--profile PROFILE` | ملف تعريف الفحص: QUICK، FULL، STEALTH، PING، IOT، SMB (الافتراضي: QUICK) | متغير |
| `-i`, `--interactive` | تشغيل الوضع التفاعلي الموجه | لا |
| `--full-assessment` | تقييم كامل + تصدير HTML تلقائي؛ يبقى تدقيق بيانات الاعتماد اختياريًا | لا |
| `--identify` | تشغيل تحديد الجهاز فقط (تخطي فحوصات الأمان) | لا |
| `--nse` | تمكين محرك نصوص Nmap للكشف المحسن | لا |
| `--check-defaults` | الموافقة على تدقيق بيانات الاعتماد الافتراضية الآمنة من الإغلاق (الأجهزة المملوكة فقط) | لا |
| `--save-baseline` | حفظ الفحص كخط أساس موثوق للكشف عن الأجهزة المارقة | لا |
| `--setup` | معالج الإعداد الأولي (التبعيات + تنزيل ذاكرة التخزين المؤقت) | لا |
| `--update-cache` | تحديث ذاكرات التخزين المؤقت لبيانات CVE و EOL يدويًا | لا |
| `--cache-status` | عرض عمر ذاكرة التخزين المؤقت وعدد الإدخالات، ثم الخروج | لا |
| `--modules` | عرض حالة جميع وحدات البيانات القابلة للتنزيل | لا |
| `--download MODULE` | تنزيل وحدة بيانات (أو "all") | لا |
| `--db SIZE` | حجم قاعدة بيانات EOL لـ `--setup`: mini، normal، large (الافتراضي: normal) | لا |
| `--history` | عرض جدول سجل الفحص والخروج | لا |
| `--diff` | مقارنة آخر فحصين محفوظين والخروج | لا |
| `--since DAYS` | مع `--diff`: مقارنة مع فحص عمره على الأقل N يومًا | لا |
| `--check-version` | التحقق من وجود إصدار أحدث من SunsetScan على GitHub | لا |
| `--update` | سحب أحدث كود من GitHub وإعادة تثبيت المتطلبات | لا |
| `--verbose` | تمكين تسجيل التصحيح | لا |
| `--no-color` | تعطيل الإخراج الملون (مفيد لملفات السجل) | لا |
| `--quiet` | كتم أشرطة التقدم (تظل النتائج معروضة) | لا |
| `--safe-mode` | فرض فحص أكثر لطفًا: nmap محدود، استخدام أقل لـ masscan، عدد أقل من العمال، تخطي الفحوصات الثقيلة | لا |
| `--no-safe-mode` | تعطيل الوضع الآمن التلقائي | لا |
| `--version` | عرض رقم الإصدار والخروج | لا |
---
## ملفات الفحص الشخصية
| الملف الشخصي | علامات nmap | السرعة | الجذر | الأفضل لـ |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | لا | العثور بسرعة على الأجهزة النشطة |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | لا | نظرة أولى على الشبكة (مع اكتشاف إصدار خفيف) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | نعم | تحليل عميق للمضيفات المحددة |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | نعم | فحص منخفض الضوضاء |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | لا | الكاميرات، أجهزة التوجيه، الأجهزة الذكية |
| **SMB** | `-T4 -sV -p 135,139,445,137,138 --script smb-security-mode,smb2-security-mode,smb-vuln-ms17-010 --open` | 1-3 min | نعم | مشاركات Windows، فحص EternalBlue |
> **نصيحة:** يتراجع FULL و STEALTH تلقائيًا إلى علامات غير جذرية عند تشغيلهما بدون sudo. سيكون اكتشاف نظام التشغيل غير متاح لكن فحص المنافذ واكتشاف الخدمة لا يزالان يعملان.
### سلامة تدقيق كلمة المرور الافتراضية
اختبار كلمات المرور الافتراضية لا يتم تمكينه تلقائيًا أبدًا. في وضع CLI، أضف
`--check-defaults`؛ في الوضع التفاعلي `-i`، اختر تدقيق كلمة المرور الافتراضية عند
الطلب. ثم يطبق SunsetScan سياسة متحفظة:
- لا يوجد رش عام لاسم المستخدم/كلمة المرور افتراضيًا
- يختبر فقط بيانات الاعتماد المطابقة للبائع والموديل/العائلة المكتشفة
- يتخطى الأجهزة ذات افتراضيات ملصق/رقم تعريف فريد، مثل العديد من طابعات HP
- يحد المحاولات إلى 2 لكل مضيف و 1 لكل خدمة افتراضيًا
- ينتظر ثانيتين بين المحاولات الحاملة لبيانات الاعتماد
- يتوقف فورًا إذا أعاد الجهاز إشارات إغلاق أو حد معدل
قاعدة البيانات المدمجة صغيرة عمدًا ومدعومة بمصادر. وحدات بيانات الاعتماد الكبيرة
التي تم تنزيلها يتم الاحتفاظ بها كبيانات مرجعية، لكن التدقيق الآمن لا يستخدمها
إلا إذا تم تمكين `Settings.auth_allow_module_credentials` صراحةً
من قبل مطور.
### الوضع الآمن وعمليات التحقق من الصحة
يتم التوصية بالوضع الآمن تلقائيًا على المضيفات منخفضة الطاقة، المضيفات التي تشبه
أجهزة Pi-hole/البوابة، وخروج Wi-Fi. يمكن أيضًا فرضه باستخدام:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
في وضع الأمان SunsetScan:
-iلاختبار الانحدار بمساعدة الجذر عبر جميع الأوضاع، استخدم أداة جمع التحقق:```bash sudo bash scripts/sudo_network_validation.sh
بشكل افتراضي، يقوم باختبار `192.168.1.0/24` عبر PING و QUICK و SMB و STEALTH و FULL، وينسخ تقارير HTML المُنشأة إلى دليل التحقق، ويكتب أرشيفًا مضغوطًا تحت `reports/`. يتم تجاهل التقارير والسجلات وملفات pcap والأرشيفات بواسطة git ولا ينبغي إرسالها.
تجاوزات مفيدة:```bash
sudo SUNSETSCAN_TARGETS="192.168.1.0/24" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_PROFILES="PING QUICK FULL" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_COMMAND_TIMEOUT=1200 bash scripts/sudo_network_validation.sh
لا يقوم SunsetScan أبدًا باستدعاء واجهات برمجة تطبيقات خارجية أثناء الفحص. تتم قراءة جميع البيانات من ملفات التخزين المؤقت المحلية في data/cache/.
تعمل عمليات الفحص بشكل طبيعي مع وجود ذاكرة تخزين مؤقت قديمة أو مفقودة — قد يكون لديك ببساطة بيانات CVE قديمة.
---
## كشف الأجهزة المارقة```bash
# Step 1: Save baseline when all known devices are present
sudo python3 sunsetscan.py --target 192.168.1.0/24 --save-baseline
# Step 2: Future scans automatically compare against baseline
sudo python3 sunsetscan.py --target 192.168.1.0/24
| النتيجة | الخطورة | المعنى | |---|---|---|---| | تم اكتشاف جهاز غير معروف | متوسط | عنوان MAC غير موجود في القاعدة الأساسية — جهاز جديد أو غير مصرح به | | تغير عنوان IP للجهاز | منخفض | عنوان MAC معروف على عنوان IP مختلف (عادةً DHCP عادي) | | جهاز شوهد سابقاً غير متصل | معلومات | جهاز القاعدة الأساسية لا يستجيب |
ملاحظة: تتطلب القاعدة الأساسية صلاحيات root/sudo لكشف عنوان MAC عبر nmap.
كل --full-assessment يُنتج تقرير HTML مكتفي ذاتياً يتضمن:
يتم فتح التقارير في أي متصفح دون الحاجة إلى إنترنت.
يقوم SunsetScan تلقائياً بتعريف أجهزة الشبكة من خلال دمج الأدلة من 14 مصدراً مختلفاً. يساهم كل مصدر ببائع، نموذج، إصدار، أو نوع جهاز مع درجة ثقة. تقوم خوارزمية الدمج بجمع المصادر المتوافقة (مع مكافآت للتوافق متعدد المصادر) وتعاقب الأدلة المتضاربة.
لمعرفة ما هو موجود على شبكتك دون تشغيل فحوصات أمنية:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
يقوم هذا بتشغيل فحص منافذ مع سحب اللافتات وطباعة جدول تعريف الأجهزة. لا تحليل أمني، لا تقرير — مجرد جرد سريع.
### مصادر الأدلة
| المصدر | ما يقرأه | الثقة |
|--------|--------------|------------|
| MAC OUI | بادئة البائع IEEE من عنوان MAC | 0.40-0.45 |
| nmap OS | تخمين بصمة نظام التشغيل | متغير |
| HTTP fingerprint | نوع الجهاز، الطراز، البرنامج الثابت من واجهة الويب | 0.50+ |
| HTTP headers | الخادم، رؤوس الاستجابة X-Powered-By | 0.20-0.50 |
| TLS certificate | حقول CN، المُصدر، المؤسسة | 0.35 |
| SSH banner | سلسلة تعريف خفيض SSH | 0.10-0.70 |
| UPnP | SSDP الشركة المصنعة، الطراز، نوع الجهاز | 0.75 |
| SNMP sysDescr | وصف النظام من MIB SNMP | 0.85 |
| Wappalyzer | سلاسل CPE وفئات التقنية | 0.30-0.45 |
| mDNS/Zeroconf | إعلانات نوع الخدمة | 0.55 |
| JA3S | قاعدة بيانات بصمة المصافحة TLS | 0.50 |
| FTP banner | تعريف برنامج خادم FTP | 0.25-0.35 |
| Port heuristics | أنماط مجموعات المنافذ المفتوحة | 0.10-0.70 |
| nmap services | حقول منتج وإصدار الخدمة | 0.45 |
تظهر نتائج التحديد في:
- جدول جرد الأجهزة الطرفية (أثناء الفحص وعبر `--identify`)
- بطاقات طوبولوجيا تقرير HTML وقسم جرد الأجهزة
- قسم `device_identities` في تصدير JSON
- خيار القائمة [8] جرد الأجهزة في الوضع التفاعلي
---
## مستويات الخطورة
| المستوى | اللون | نطاق CVSS | المعنى | موعد التصرف |
|---|---|---|---|---|
| **حرج** | أحمر | >= 9.0 | بيانات اعتماد افتراضية، CVE قابل للاستغلال، SSL 2.0 | اليوم |
| **عالٍ** | برتقالي | 7.0-8.9 | Telnet/FTP مفتوح، شهادة منتهية الصلاحية، TLS 1.0، برنامج منتهي الدعم | هذا الأسبوع |
| **متوسط** | أصفر | 4.0-6.9 | شهادة ذاتية التوقيع، تعرض UPnP، جهاز غير مصرح به، نقص HSTS | جدولة الإصلاح |
| **منخفض** | أزرق | < 4.0 | اقتراب نهاية الدعم، نقص X-Frame-Options، تغيير IP الجهاز | تتبع والتخطيط |
| **معلومات** | رمادي | - | تم تحديد الجهاز، تفاصيل الشهادة، تم اجتياز فحص DNS | لا إجراء |
---
## هيكل المشروع```
sunsetscan/
├── sunsetscan.py # Entry point — CLI, scan pipeline, setup wizard
├── requirements.txt # Python dependencies
├── install.sh # Automated installer for Linux/macOS
├── install.bat # Automated installer for Windows (basic)
├── README.md # This file
│
├── config/
│ └── settings.py # All constants, timeouts, scan profiles, menu options
│
├── core/
│ ├── scanner.py # nmap wrapper (ScanResult, HostInfo, PortInfo)
│ ├── port_scanner.py # Masscan pipeline + PortScanOrchestrator
│ ├── banner_grabber.py # Concurrent raw socket banner grabbing
│ ├── http_fingerprinter.py # HTTP device/firmware fingerprinting
│ ├── nse_scanner.py # Nmap Scripting Engine integration
│ ├── auth_tester.py # Default credential testing (HTTP, device-specific)
│ ├── input_parser.py # Flexible target format parsing
│ ├── network_utils.py # Subnet detection, IP helpers, WSL detection
│ ├── findings.py # Finding dataclass, Severity enum, FindingRegistry
│ ├── risk_scorer.py # Per-device risk scoring (0-100)
│ ├── cache_manager.py # Unified CVE + EOL cache (data/cache/)
│ ├── cve_checker.py # CVE lookup + CVECacheBuilder (OSV.dev)
│ ├── ssl_checker.py # TLS certificate, cipher suite, JA3S fingerprinting
│ ├── ssh_checker.py # SSH version, algorithms, KEXINIT analysis
│ ├── smb_checker.py # SMBv1, EternalBlue, shares, NTLM disclosure
│ ├── ftp_checker.py # Anonymous FTP, STARTTLS
│ ├── snmp_checker.py # SNMP community strings, sysDescr (pysnmp v4+v7)
│ ├── web_checker.py # HTTP headers, admin panels, Wappalyzer
│ ├── dns_checker.py # DNS hijack and rebinding detection
│ ├── upnp_checker.py # SSDP discovery, UPnP risk assessment
│ ├── mdns_checker.py # mDNS/Zeroconf device discovery
│ ├── arp_checker.py # ARP spoofing detection
│ ├── device_identifier.py # 14-source device identification engine
│ ├── identity_fusion.py # Multi-source identity fusion and scoring
│ ├── oui_lookup.py # IEEE OUI MAC vendor resolution
│ ├── device_map.py # Persistent MAC→identity mapping
│ ├── passive_sniffer.py # Background mDNS/SSDP/DHCP packet capture
│ ├── packet_parsers.py # Protocol-specific packet parsing
│ ├── instant_scan.py # ARP sweep + passive capture quick scan
│ ├── hybrid_scanner.py # Passive+active scan orchestrator
│ ├── baseline.py # Rogue device baseline comparison
│ ├── hardware_eol.py # Downloaded hardware lifecycle database lookup
│ ├── scan_history.py # Scan snapshot persistence and diffing
│ ├── module_manager.py # Downloadable data module system
│ └── update_manager.py # Version check and self-update
│
├── eol/
│ ├── checker.py # EOL API queries and version comparison
│ ├── cache.py # Per-product JSON cache
│ └── product_map.py # 150+ software name -> lifecycle cache slug mappings
│
├── ui/
│ ├── menu.py # Old-style numbered menu (no-args mode)
│ ├── display.py # Rich terminal tables, progress bars, banners
│ ├── export.py # JSON and HTML report generation
│ ├── interactive_controller.py # Interactive mode (-i) with multi-level menus
│ └── templates/
│ └── report.html.j2 # Jinja2 HTML report template
│
└── data/
├── default_credentials.json # Factory-default credentials database
├── device_map.json # Persistent MAC→identity map
├── baseline.json # Saved device baseline (--save-baseline)
├── cache/
│ ├── cve_cache.json # CVE data keyed by product:version
│ ├── <product>.json # EOL data keyed by product slug
│ ├── hardware_eol/ # Downloaded hardware lifecycle database
│ └── cache_meta.json # Cache update timestamps
├── history/ # Gzip scan snapshots (auto-saved)
└── modules/ # Downloaded data modules
nmap غير موجود```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Permission denied / OS detection not working**
تتطلب ملفات التعريف FULL وSTEALTH وSMB صلاحيات مرتفعة. بدون صلاحية الجذر (root)، تعود هذه الملفات التعريفية تلقائيًا إلى الخيارات غير الجذرية (يتم تعطيل اكتشاف نظام التشغيل والفحص باستخدام SYN، لكن فحص المنافذ/الإصدارات لا يزال يعمل).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 تقترح شبكة خاطئة (172.x.x.x)
في WSL2، يكتشف SunsetScan المحول الافتراضي ويعود إلى 192.168.1.0/24. إذا كانت شبكة منزلك تستخدم شبكة فرعية مختلفة، فحددها باستخدام --target:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**تحذيرات التخزين المؤقت عند بدء الفحص**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
تعمل عمليات الفحص بشكل جيد مع البيانات القديمة. قم بتشغيل --update-cache للتحديث.
Permission denied أثناء تنزيل الوحدات
إذا فشل تنزيل الوحدات بسبب Permission denied: .../data/cache/...، فمن المحتمل أن ذاكرة التخزين المؤقت قد تم إنشاؤها باستخدام sudo. قم بإصلاح الملكية مرة واحدة، ثم قم بتشغيل الإعداد وتنزيل الوحدات كمستخدمك العادي:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**فحوصات SNMP لا تعمل**
يدعم SunsetScan كلاً من pysnmp v4 (متزامن) و v7 (غير متزامن). إذا رأيت أخطاء استيراد، قم بتحديث pysnmp:```bash
pip install --upgrade pysnmp
SunsetScan هي أداة تدقيق أمني مخصصة للاستخدام على الشبكات والأجهزة التي تمتلكها أو لديك إذن كتابي صريح لاختبارها.
قد يكون تشغيل عمليات فحص الشبكة ضد أنظمة لا تمتلكها أو ليس لديك إذن لاختبارها غير قانوني بغض النظر عن النية. المؤلفون لا يتحملون أي مسؤولية عن سوء الاستخدام.
SunsetScan غير مدمر تمامًا وللقراءة فقط. لا يستغل الثغرات الأمنية، ولا يسلم حمولات، ولا يعدل أي تكوين على أي جهاز تم مسحه. اختبار بيانات الاعتماد --check-defaults هو اختياري، محدود، مؤجل، موجه للنموذج الدقيق، ويتوقف عند إشارات القفل/تحديد المعدل؛ إنه ليس ميزة هجوم القوة العمياء.
مستودع SunsetScan ورمز التطبيق مرخصان بموجب رخصة MIT — حقوق الطبع والنشر 2024 مساهمو SunsetScan.
فقط قطع أثرية قاعدة بيانات نهاية عمر الأجهزة (EOL) الخاصة بـ SunsetScan تحت data/hardware_eol/ مرخصة بشكل منفصل: هذه القاعدة مرخصة بموجب رخصة المشاع الإبداعي نسب المصنف – غير تجاري 4.0 الدولية (CC BY-NC 4.0). انظر data/hardware_eol/LICENSE.md.
| المنصة | مستوى الدعم | ملاحظات |
|---|
| لينكس (Debian, Ubuntu, Fedora, Arch, إلخ) | دعم كامل | أفضل تجربة — جميع الميزات تعمل بشكل أصلي |
| WSL2 (نظام ويندوز الفرعي للينكس) | دعم كامل | الطريقة الموصى بها للتشغيل على أجهزة ويندوز |
| macOS | جزئي | المسح الأساسي يعمل؛ بعض الميزات (ARP، الالتقاط السلبي) قد تتطلب إعدادًا إضافيًا |
| ويندوز (CMD/PowerShell الأصلي) | غير مدعوم | يفتقر إلى raw sockets وos.geteuid() و/proc وip route وtermios — استخدم WSL2 بدلاً من ذلك |
| العلم | التأثير |
|---|
| (بدون علامات) | التثبيت الافتراضي: حزم النظام + البيئة الافتراضية + تبعيات بايثون + اختبار ذاتي |
--force | حذف البيئة الافتراضية وإعادة بنائها من الصفر (استخدم بعد ترقية بايثون) |
--symlink | كذلك تثبيت /usr/local/bin/sunsetscan لتتمكن من تشغيل sunsetscan من أي مكان |
--no-system | تخطي خطوة apt/dnf/etc (استخدم إذا كانت أدوات النظام مثبتة مسبقًا) |
--help | عرض جميع الخيارات |
| المدقق | ما يكتشفه |
|---|
| SSL/TLS | شهادات منتهية الصلاحية/موقعة ذاتيًا، تشفيرات ضعيفة، TLS 1.0/1.1، SSL 2.0/3.0، مفاتيح RSA صغيرة |
| SSH | تبادل مفاتيح ضعيف، تشفيرات/MACs ضعيفة، SSHv1، مفاتيح مضيف صغيرة، تحليل KEXINIT الخام |
| SMB | SMBv1، EternalBlue (MS17-010)، مشاركات مجهولة، توقيع SMB معطل، كشف NTLM |
| FTP | تسجيل دخول مجهول، بيانات اعتماد نص واضح، عدم وجود STARTTLS |
| SNMP | سلاسل مجتمع افتراضية (public/private)، SNMPv1، استخراج sysDescr |
| Web | رؤوس أمنية مفقودة، نماذج تسجيل دخول عبر HTTP، قائمة الدليل، لوحات إدارة مكشوفة |
| DNS | اكتشاف اختطاف DNS (يقارن مع Cloudflare 1.1.1.1) |
| UPnP | اكتشاف SSDP، تعرض تعيين منفذ WAN على أجهزة التوجيه |
| mDNS | اكتشاف أجهزة Zeroconf/Bonjour، يجد المضيفين الذين يتجنبون مسوحات المنافذ |
| ARP | اكتشاف انتحال ARP، تتبع تغيير عنوان MAC (يتطلب صلاحيات الجذر) |
| بيانات الاعتماد الافتراضية | تدقيق مسبق للاختيار لافتراضيات المصنع باستخدام مطابقات دقيقة للجهاز/النموذج، ومحاولات محدودة، وتأخيرات |
| البروتوكولات غير الآمنة | Telnet، FTP، TFTP، rsh، rlogin، rexec موسومة حسب الخطورة |
| الوحدة | المصدر | ما تضيفه |
|---|
credentials-mini | danielmiessler/SecLists | أفضل 50 بيانات اعتماد افتراضية (بيانات مرجعية قابلة للتنزيل؛ لا تستخدمها التدقيق الآمن إلا إذا تم تمكينها صراحة في الإعدادات) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | أكثر من 2860 بيانات اعتماد خاصة بالبائع (بيانات مرجعية قابلة للتنزيل؛ لا تستخدمها التدقيق الآمن إلا إذا تم تمكينها صراحة في الإعدادات) |
wappalyzer-mini | enthec/webappanalyzer | أفضل 500 تقنية ويب (افتراضي) |
wappalyzer-full | enthec/webappanalyzer | جميع تقنيات الويب البالغ عددها 7515 |
ja3-signatures | salesforce/ja3 | قاعدة بيانات بصمات TLS |
snmp-community | danielmiessler/SecLists | سلاسل مجتمع SNMP موسعة |
camera-credentials | many-passwords/many-passwords | إعدادات افتراضية لكاميرات IP/ DVR/ NVR (بيانات مرجعية قابلة للتنزيل؛ لا تستخدمها التدقيق الآمن إلا إذا تم تمكينها صراحة في الإعدادات) |
mac-oui | IEEE Standards Association | قاعدة بيانات بائعي بادئات MAC (افتراضي) |
hardware-eol-home | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة المنزلية/المكاتب الصغيرة ونهاية العمر (افتراضي؛ ترخيص قاعدة البيانات: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة المنزلية والمكاتب الصغيرة ونهاية العمر |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة المنزلية والمكتبية والمؤسسية/الحرم الجامعي/مركز البيانات ونهاية العمر |
hardware-eol-industrial | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة المنزلية والمكتبية والصناعية/OT ونهاية العمر |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة المنزلية والمكتبية والمؤسسية ومزود الخدمة ونهاية العمر |
hardware-eol-full | NoCoderRandom/sunsetscan | ملف تعريف دورة حياة الأجهزة الذكية الكامل ونهاية العمر |
hardware-eol | NoCoderRandom/sunsetscan | وحدة توافق دورة حياة الأجهزة المجزأة القديمة الكاملة ونهاية العمر |
| sunsetscan --modules # Show module status | ||
| sunsetscan --download all # Download all modules, using the full hardware EOL smart profile | ||
| sunsetscan --download ja3-signatures # Download one data module | ||
| sunsetscan --download hardware-eol-home # Download a smaller hardware EOL profile | ||
| sunsetscan --download hardware-eol-full # Download every hardware EOL smart pack |
| الملف | المحتوى | فترة التحديث |
|---|
data/cache/cve_cache.json | بيانات CVE مقيدة بالمنتج:الإصدار | كل 7 أيام |
data/cache/*.json | تواريخ انتهاء الدعم لأكثر من 150 منتجًا، مخزنة لكل منتج | كل 30 يومًا |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json بالإضافة إلى records/*.json | قاعدة بيانات دورة حياة الأجهزة / انتهاء الدعم | كل 30 يومًا |
data/cache/hardware_eol/manifest.json و indexes/*.json و records/<pack>/*.json | ملفات تعريف دورة حياة الأجهزة / انتهاء الدعم (الحزمة الذكية) | كل 30 يومًا |
data/cache/cache_meta.json | الطوابع الزمنية لآخر التحديثات | تلقائيًا |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |