From a79fc5e72f324ed892cc51124a114c9b64f34ff2 Mon Sep 17 00:00:00 2001 From: Symbian-Bro Date: Tue, 22 Jul 2025 13:33:35 +0530 Subject: [PATCH 1/2] Add RTSP stream paths for discovery (Armcrest) - Added /cam/realmonitor for IP camera streams. - Added /h264Preview_01_main for DVR/NVR streams. --- CamXploit.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CamXploit.py b/CamXploit.py index 236c5c4..ef3e8ed 100644 --- a/CamXploit.py +++ b/CamXploit.py @@ -870,6 +870,9 @@ def detect_live_streams(ip, open_ports): '/live/1/h264.sdp', # Generic '/live/1/mpeg4.sdp', # Generic '/live/1/audio.sdp' # Generic + '/cam/realmonitor?channel=1&subtype=0', # Amcrest (Main Stream) + '/cam/realmonitor?channel=1&subtype=1', # Amcrest (Sub Stream) + '/h264Preview_01_main' #Armcrest DVR/NVR ], 'rtmp': [ '/live', From 94a1657335e7e9efe10a873a96f95fe79f4e31a9 Mon Sep 17 00:00:00 2001 From: Symbian-Bro Date: Tue, 22 Jul 2025 14:09:34 +0530 Subject: [PATCH 2/2] - Improved CLI Changes : - Replaced the `input()` prompt with `argparse` for handling command-line arguments. - The target IP can now be given as a positional argument - Added a `--help` parameter which will print usage instructions. Usage - python CamXploit.py 192.168.1.100 --- CamXploit.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CamXploit.py b/CamXploit.py index ef3e8ed..28ccc15 100644 --- a/CamXploit.py +++ b/CamXploit.py @@ -3,6 +3,7 @@ import sys import threading import warnings +import argparse from requests.auth import HTTPBasicAuth from xml.etree import ElementTree as ET import ipaddress @@ -1061,7 +1062,13 @@ def check_stream_with_details(url): def main(): global threads_running try: - target_ip = input(f"{G}[+] {C}Enter IP address: {W}").strip() + parser = argparse.ArgumentParser( + description="CamXploit - Camera Exploitation & Exposure Scanner.", + epilog=f"Example: python {sys.argv[0]} 192.168.1.100" + ) + parser.add_argument("target_ip", help="The IP address of the target camera to scan.") + args = parser.parse_args() + target_ip = args.target_ip.strip() if not validate_ip(target_ip): return