From 0853268b30f95e15de18b6431b0e1e4627afeff1 Mon Sep 17 00:00:00 2001 From: P7MJ Date: Tue, 17 Mar 2026 19:23:47 -0400 Subject: [PATCH] Uploaded CLRadio A-1-ii "Integra" Intregated client! --- CLRadio-Hybrid A-1-ii Integra.py | 145 +++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 CLRadio-Hybrid A-1-ii Integra.py diff --git a/CLRadio-Hybrid A-1-ii Integra.py b/CLRadio-Hybrid A-1-ii Integra.py new file mode 100644 index 0000000..cc95043 --- /dev/null +++ b/CLRadio-Hybrid A-1-ii Integra.py @@ -0,0 +1,145 @@ +import socket +import threading +from pathlib import Path +import sys + +# ----- GLOBALS & LOCKS ----- # +# This prevents the Receiver and Sender from printing over each other +print_lock = threading.Lock() + +# ----- KNOWN CONNECTION FILE LOGIC (Compatibility Kept) ----- # + +def read_specific_line(filename, line_number): + try: + with open(filename, 'r') as file: + for index, line in enumerate(file): + if index == line_number: + current_line = line.rsplit(": ", 1) + return current_line[1].strip() + except Exception: + return None + return None + +def known_connection_file(mode, nick=None, ip_addr=None, no_of_ip_chosen=None): + file_path = Path("known_connections.txt") + if not file_path.exists(): + with open(file_path, 'w') as f: f.write("") + + if mode == "read": + with open(file_path, 'r') as f: + for i, line in enumerate(f, 1): + print(f"[{i}] {line}", end="") + elif mode == "select": + return read_specific_line(file_path, no_of_ip_chosen - 1) + elif mode == "write": + with open(file_path, 'a') as f: + f.write(f"{nick}: {ip_addr}\n") + elif mode == "clear": + with open(file_path, 'w') as f: f.write("") + +# ----- THE RECEIVER THREAD (Runs in background) ----- # + +def background_receiver(): + host = '0.0.0.0' + port = 443 + + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + try: + s.bind((host, port)) + except PermissionError: + with print_lock: + print("\n[!] ERROR: Process Needs Elevation.") + return + + s.listen(5) + + while True: + c, addr = s.accept() + with print_lock: + print(f"\n[+] {addr}") + + while True: + try: + data = c.recv(1024).decode() + if not data: + break + with print_lock: + # The \r ensures we clear any partially typed input line + print(f"\r [R] {addr[0]}: {data}\n > ", flush=True) + except Exception: + break + c.close() + +# ----- THE MAIN SENDER LOGIC ----- # + +def port_selection(): + with print_lock: + print("\n" + "="*60) + print(" P7-InfraNET CLRadio-Hybrid A-1-ii Integra | P7MJ") + print("="*60) + print("[1] Connect to IPv4") + print("[2] Wait for a connection") + print("[x] Exit App") + choice = input(" > ") + if choice == "x": sys.exit() + if choice == "1": + known_connection_file("read") + print("[n] New profile\n[d] Delete all profiles") + sub_choice = input("\n > ") + if num.isdigit(): + return known_connection_file("select", no_of_ip_chosen=int(num)) + elif sub_choice == "n": + nick = input("Profile Nickname > ") + ip = input("Profile IPv4 > ") + known_connection_file("write", nick, ip) + return None + elif sub_choice == "3": + areusure = input("ARE YOU SURE? This is irreversible! [Yes/cancel]") + if areusure == "Yes": + known_connection_file("clear") + return None + if choice == "2": + print("Waiting...", end = "\r") + return None + +def run_app(): + # Start background receiver immediately + recv_thread = threading.Thread(target=background_receiver, daemon=True) + recv_thread.start() + + while True: + target_ip = None + while not target_ip: + target_ip = port_selection() + + try: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.settimeout(5) + s.connect((target_ip, 443)) + s.settimeout(None) + + with print_lock: + print(f"\r[!] Connected to {target_ip}. Type 'exit' to disconnect.", flush=True) + + while True: + msg = input(" [S] ") + if msg.lower() == 'exit': + break + try: + s.send(msg.encode()) + except Exception: + print("[!] FATAL: Connection lost at second to last message!") + break + s.close() + except Exception as e: + print(f"[!] Could not connect to {target_ip}: {e}") + +if __name__ == '__main__': + while True: + try: + run_app() + except KeyboardInterrupt: + input("\n[!] User terminated application! Press ENTER to continue...") + sys.exit(0) +