bhp-pro 1.2.9__py3-none-any.whl → 1.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bhp_pro
3
- Version: 1.2.9
3
+ Version: 1.3.0
4
4
  Summary: Web Enumeration Tool
5
5
  Author: ssskingsss12
6
6
  Author-email: smalls3000i@gmail.com
@@ -0,0 +1,6 @@
1
+ bhp_pro.py,sha256=WJ2J94cH1-qKf3AynRr8Q4t0GhzNxs2VunaQip0T7zA,748620
2
+ bhp_pro-1.3.0.dist-info/METADATA,sha256=t7JildGhotdLKQG8WAcZWV-rFl9R6FhukOP2UhCNEMs,600
3
+ bhp_pro-1.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
4
+ bhp_pro-1.3.0.dist-info/entry_points.txt,sha256=Yn3HpraGX3lXX4FPq3Gm-lHh3SwQA-5rtgPWNWMFXkw,41
5
+ bhp_pro-1.3.0.dist-info/top_level.txt,sha256=1xjbIaVM77UJz9Tsi1JjILgE0YDG7iLhY6KSMNEi9zM,8
6
+ bhp_pro-1.3.0.dist-info/RECORD,,
bhp_pro.py CHANGED
@@ -16872,6 +16872,94 @@ def menu3():
16872
16872
 
16873
16873
  mainsee()
16874
16874
 
16875
+ #===SUBDOmain TAKEOVER===#
16876
+ def access_control():
16877
+
16878
+ generate_ascii_banner("ACCESS", "CONTROL")
16879
+ THREAD_COUNT = 100
16880
+
16881
+ LOCK = threading.Lock()
16882
+ user_input = input("Enter a domain or .txt file: ").strip()
16883
+ OUTPUT_FILE = input("Enter output file name (default is x_requested_with_results.txt): ").strip() or "x_requested_with_results.txt"
16884
+ def check_domain(domain, progress):
16885
+ preflight_headers = {
16886
+ 'Origin': 'https://yahoo.com/',
16887
+ 'Access-Control-Request-Method': 'GET',
16888
+ 'Access-Control-Request-Headers': 'X-Requested-With, X-Online-Host, X-Forwarded-For',
16889
+ 'User-Agent': 'Mozilla/5.0'
16890
+ }
16891
+
16892
+ for protocol in ['http://', 'https://']:
16893
+ url = protocol + domain
16894
+ try:
16895
+ response = requests.options(url, headers=preflight_headers, timeout=5)
16896
+ status = response.status_code
16897
+ allowed_headers = response.headers.get('Access-Control-Allow-Headers', '').lower()
16898
+
16899
+ allowed = []
16900
+ if 'x-requested-with' in allowed_headers:
16901
+ allowed.append('X-Requested-With')
16902
+ if 'x-online-host' in allowed_headers:
16903
+ allowed.append('X-Online-Host')
16904
+ if 'x-forwarded-for' in allowed_headers:
16905
+ allowed.append('X-Forwarded-For')
16906
+
16907
+ if allowed:
16908
+ server = response.headers.get('Server', 'Unknown')
16909
+ print(f"✅ {url} - ALLOWS: {', '.join(allowed)} | Status: {status}")
16910
+ with LOCK:
16911
+ with open(OUTPUT_FILE, "a") as f:
16912
+ f.write(f"{url} | Status: {status} | Server: {server} | Allowed Headers: {', '.join(allowed)}\n")
16913
+ else:
16914
+ print(f"⚠️ {url} - None of the desired X-* headers allowed.")
16915
+
16916
+ except requests.exceptions.RequestException as e:
16917
+ print(f"❌ {url} - Request failed: {e}")
16918
+ finally:
16919
+ with LOCK:
16920
+ progress.update(1)
16921
+
16922
+
16923
+ def worker(domain_queue, progress):
16924
+ while not domain_queue.empty():
16925
+ domain = domain_queue.get()
16926
+ check_domain(domain, progress)
16927
+ domain_queue.task_done()
16928
+
16929
+ def access_main():
16930
+
16931
+
16932
+ if os.path.isfile(user_input) and user_input.endswith('.txt'):
16933
+ with open(user_input, 'r') as file:
16934
+ domains = [line.strip() for line in file if line.strip()]
16935
+ else:
16936
+ domains = [user_input]
16937
+
16938
+ if os.path.exists(OUTPUT_FILE):
16939
+ os.remove(OUTPUT_FILE)
16940
+
16941
+ domain_queue = Queue()
16942
+ for domain in domains:
16943
+ domain_queue.put(domain)
16944
+
16945
+ progress = tqdm(total=len(domains) * 2, desc="Checking", ncols=80)
16946
+
16947
+ threads = []
16948
+ for _ in range(THREAD_COUNT):
16949
+ t = threading.Thread(target=worker, args=(domain_queue, progress))
16950
+ t.start()
16951
+ threads.append(t)
16952
+
16953
+ for t in threads:
16954
+ t.join()
16955
+
16956
+ progress.close()
16957
+ print(f"\n✅ Finished checking. Results saved to {OUTPUT_FILE}")
16958
+
16959
+
16960
+ access_main()
16961
+
16962
+
16875
16963
  def x_menu():
16876
16964
 
16877
16965
  def return_to_menu():
@@ -16901,6 +16989,7 @@ def menu3():
16901
16989
  "3. INFO",
16902
16990
  "4. Wif Abomination",
16903
16991
  "5. KPROXY_SCANNER" ,
16992
+ "6. ACCESS CONTROL" ,
16904
16993
 
16905
16994
  ]
16906
16995
 
@@ -16925,7 +17014,8 @@ def menu3():
16925
17014
  "2": ipcam,
16926
17015
  "3": info,
16927
17016
  "4": wifi_deauth,
16928
- "5": prox
17017
+ "5": prox,
17018
+ "6": access_control,
16929
17019
 
16930
17020
 
16931
17021
  }
@@ -16968,7 +17058,7 @@ def banner():
16968
17058
  MAGENTA + "██╔═══╝ ██╔══██╗██║ ██║" + LIME + "user should understand that useage of this script may be" + ENDC,
16969
17059
  MAGENTA + "██║ ██║ ██║╚██████╔╝" + LIME + "concidered an attack on a data network, and may violate terms" + ENDC,
16970
17060
  MAGENTA + "╚═╝ ╚═╝ ╚═╝ ╚═════╝" + LIME + "of service, use on your own network or get permission first" + ENDC,
16971
- PURPLE + "script_version@ 1.2.9 ®" + ENDC,
17061
+ PURPLE + "script_version@ 1.3.0 ®" + ENDC,
16972
17062
  ORANGE + "All rights reserved 2022-2026 ♛: ®" + ENDC,
16973
17063
  MAGENTA + "In Collaboration whit Ayan Rajpoot ® " + ENDC,
16974
17064
  BLUE + "Support: https://t.me/BugScanX 💬" + ENDC,
@@ -1,6 +0,0 @@
1
- bhp_pro.py,sha256=PILeO-qsRI54JDAkMxqhte87SrQhNyhaGnb52xypsFU,745023
2
- bhp_pro-1.2.9.dist-info/METADATA,sha256=ymCnXEbRzRbwrBjss9-hGyZIDXqjHdIEUKWKTEk38-c,600
3
- bhp_pro-1.2.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
4
- bhp_pro-1.2.9.dist-info/entry_points.txt,sha256=Yn3HpraGX3lXX4FPq3Gm-lHh3SwQA-5rtgPWNWMFXkw,41
5
- bhp_pro-1.2.9.dist-info/top_level.txt,sha256=1xjbIaVM77UJz9Tsi1JjILgE0YDG7iLhY6KSMNEi9zM,8
6
- bhp_pro-1.2.9.dist-info/RECORD,,