Español
Abrir en Telegram

Mensaje import osimport ssl

17 de diciembre de 2024
C
import osimport ssl import socketimport threading import subprocessfrom http.server import HTTPServer, BaseHTTPRequestHandler from cryptography import x509from cryptography.x509.oid import NameOID from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import rsa from datetime import datetime, timedelta, timezone # General ConfigurationCERT_DIR = "C:\\certs" CA_CERT_FILE = os.path.join(CERT_DIR, "ca_cert.pem")CA_KEY_FILE = os.path.join(CERT_DIR, "ca_key.pem") SSL_TIMEOUT = 15 # Timeout for SSL connectionsMAX_RETRIES = 3 # Number of retries for connections def log_message(message): print(f"[LOG] {message}") # 1. Generate CA Certificate and Key def generate_ca(): if not os.path.exists(CERT_DIR): os.makedirs(CERT_DIR) log_message("Generating CA certificate and key...") ca_key = rsa.generate_private_key(public_exponent=65537, key_size=4096) subject = x509.Name([ x509.NameAttribute(NameOID.COUNTRY_NAME, "US"), x509.NameAttribute(NameOID.ORGANIZATION_NAME, "Advanced Proxy Authority"), x509.NameAttribute(NameOID.COMMON_NAME, "Advanced Proxy Root CA"), ]) cert = ( x509.CertificateBuilder() .subject_name(subject) .issuer_name(subject) .public_key(ca_key.public_key()) .serial_number(x509.random_serial_number()) .not_valid_before(datetime.now(timezone.utc)) .not_valid_after(datetime.now(timezone.utc) + timedelta(days=3650)) .sign(ca_key, hashes.SHA256()) ) with open(CA_CERT_FILE, "wb") as f: f.write(cert.public_bytes(serialization.Encoding.PEM)) with open(CA_KEY_FILE, "wb") as f: f.write(ca_key.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL, serialization.NoEncryption() )) subprocess.run(["certutil", "-addstore", "Root", CA_CERT_FILE]) log_message("CA certificate installed successfully.") # 2. Proxy Handler class ProxyHandler(BaseHTTPRequestHandler): def do_CONNECT(self): host, port = self.path.split(":") port = int(port) log_message(f"Intercepting HTTPS for {host}") cert_file, key_file = self.generate_cert(host) retries = 0 while retries < MAX_RETRIES: try: with socket.create_connection((host, port), timeout=SSL_TIMEOUT) as remote_socket: self.send_response(200, "Connection Established") self.end_headers() context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.minimum_version = ssl.TLSVersion.TLSv1_2 context.load_cert_chain(certfile=cert_file, keyfile=key_file) with context.wrap_socket(self.connection, server_side=True) as client_socket: self.forward_data(client_socket, remote_socket) return except Exception as e: retries += 1 log_message(f"Error during connection ({retries}/{MAX_RETRIES}): {e}") if retries >= MAX_RETRIES: self.send_error(502, "Bad Gateway") def generate_cert(self, domain): cert_file = os.path.join(CERT_DIR, f"{domain}.pem") key_file = os.path.join(CERT_DIR, f"{domain}_key.pem") if os.path.exists(cert_file) and os.path.exists(key_file): log_message(f"Using existing certificate for {domain}.") return cert_file, key_file with open(CA_KEY_FILE, "rb") as f: ca_key = serialization.load_pem_private_key(f.read(), None) with open(CA_CERT_FILE, "rb") as f: ca_cert = x509.load_pem_x509_certificate(f.read()) key = rsa.generate_private_key(public_exponent=65537, key_size=2048) subject = x509.Name([ x509.NameAttribute(NameOID.COMMON_NAME, domain) ]) san = x509.SubjectAlternativeName([ x509.DNSName(domain) ]) cert = ( x509.CertificateBuilder()

Cerca en el feed

CCaroline Harris[WinError 10038]CCaroline Harrisese error me da siempre
este mensaje
CCaroline Harris.subject_name(subject) .issuer_name(ca_cert.subject) .public_key(key.public_key()) .serial_number(x509.random_serial_number()) .not_valid_before(datetime.CCaroline Harrisese es el codigo
SSólo PythonSólo Python@Python_es · grupo · Tecnología
544miembros8 232mensajes en el índice
Feed de la comunidad Abrir en Telegram

Un feed público abierto del índice de búsqueda ChatCrawler — el “Google del Telegram público”; se actualiza a medida que se rastrea la comunidad. Las horas se muestran en UTC.

Solo contenido público, API oficial de Telegram. Acerca de · Preguntas frecuentes · Límites del índice · Eliminar una página · Catálogo · Búsqueda · Cómo contamos