Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import psutil
- import threading
- from scapy.all import sniff, IP, TCP, UDP, Raw
- import time
- import re
- import datetime
- exe_name = "Habbo.exe"
- UPDATE_INTERVAL = .1
- target_ports = set()
- chat_messages = []
- # PID
- def get_pid_by_name(name):
- for proc in psutil.process_iter(['pid', 'name']):
- if proc.info['name'] == name:
- return proc.info['pid']
- return None
- # 'Main'
- def update_connections(pid):
- global target_ports
- while True:
- try:
- process = psutil.Process(pid)
- connections = process.connections(kind='inet')
- target_ports = set()
- for conn in connections:
- target_ports.add(conn.laddr.port)
- if conn.raddr:
- target_ports.add(conn.raddr.port)
- except psutil.NoSuchProcess:
- print(f"El proceso {exe_name} ha terminado.")
- break
- except Exception as e:
- print(f"Error al actualizar conexiones: {e}")
- time.sleep(UPDATE_INTERVAL)
- # Función de callback que se llama por cada paquete capturado
- def packet_callback(packet):
- if IP in packet and (TCP in packet or UDP in packet):
- sport = packet.sport
- dport = packet.dport
- # Filtrar paquetes que utilizan los puertos del proceso monitoreado
- if sport in target_ports or dport in target_ports:
- # Extraer la carga útil (payload) si está presente
- if Raw in packet:
- payload = packet[Raw].load
- # Buscar mensajes de chat en la carga útil
- try:
- chat_message = payload.decode('utf-8')
- # Detectar patrones que coinciden con mensajes de chat
- if re.match(r'^@[A-Z][A-Z].*\x02\x01$', chat_message):
- clean_message = chat_message.rstrip('\x02\x01')
- clean_message = clean_message[2:]
- ahora = datetime.datetime.now()
- ahora = ahora.strftime("%H:%M:%S")
- print(f"[{ ahora }] ~ {clean_message}")
- chat_messages.append(chat_message)
- except UnicodeDecodeError:
- # Raro, pero puede pasar
- pass
- # Obtener el PID del ejecutable
- pid = get_pid_by_name(exe_name)
- if pid is None:
- print(f"No se encontró el proceso {exe_name}.")
- else:
- print(f"Monitoreando el proceso {exe_name} con PID {pid} ~ Made with <3 by Natural")
- # Iniciar el hilo para actualizar las conexiones del proceso
- thread = threading.Thread(target=update_connections, args=(pid,), daemon=True)
- thread.start()
- print('- Por algun motivo que aun no detecto, pueden salir caracteres raros al inicio.')
- print('- El usuario que envia el mensaje aun no es detectado.')
- print('- En algunos momentos detecta usuarios conectandose y envia mensajes raros.')
- print('Requiere ser ejecutado como administrador...')
- # Iniciar la captura de paquetes
- sniff(prn=packet_callback, store=0)
- # Puedes acceder a los mensajes de chat guardados en la variable chat_messages
- # Imprimir los mensajes de chat al final (por ejemplo, al detener el script)
- for message in chat_messages:
- print(message)
Advertisement
Add Comment
Please, Sign In to add comment