import argparse from core.runner import run_single, run_batch def banner(): print(""" CVE-2026-28286 Research Toolkit (Authorized testing only) """) def read_targets(file_path): with open(file_path, "r") as f: return f.readlines() def interactive(): target = input("[?] Target URL: ").strip() path = input("[?] Path (default /tmp): ").strip() or None return target, path def main(): banner() parser = argparse.ArgumentParser() parser.add_argument("-u", "--url", help="Single target") parser.add_argument("-t", "--targets", help="Targets file") parser.add_argument("-p", "--path", help="Custom path") parser.add_argument("--proxy", help="Proxy URL") parser.add_argument("--token", help="Bearer token") parser.add_argument("-n", "--attempts", type=int, default=1) parser.add_argument("--delay", type=int, default=0) args = parser.parse_args() if not args.url and not args.targets: target, path = interactive() run_single(target, path) return if args.url: run_single( target=args.url, path=args.path, proxy=args.proxy, token=args.token, attempts=args.attempts ) if args.targets: targets = read_targets(args.targets) run_batch( targets=targets, path=args.path, proxy=args.proxy, token=args.token, attempts=args.attempts, delay=args.delay ) if __name__ == "__main__": main()