xNatural

packetlogger habbo ntrl

Nov 10th, 2024
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.27 KB | None | 0 0
  1. import psutil
  2. import threading
  3. from scapy.all import sniff, IP, TCP, UDP, Raw
  4. import time
  5. import re
  6. import datetime
  7.  
  8. exe_name = "Habbo.exe"
  9. UPDATE_INTERVAL = .1
  10. target_ports = set()
  11. chat_messages = []
  12.  
  13. # PID
  14. def get_pid_by_name(name):
  15.     for proc in psutil.process_iter(['pid', 'name']):
  16.         if proc.info['name'] == name:
  17.             return proc.info['pid']
  18.     return None
  19.  
  20. # 'Main'
  21. def update_connections(pid):
  22.     global target_ports
  23.     while True:
  24.         try:
  25.             process = psutil.Process(pid)
  26.             connections = process.connections(kind='inet')
  27.             target_ports = set()
  28.             for conn in connections:
  29.                 target_ports.add(conn.laddr.port)
  30.                 if conn.raddr:
  31.                     target_ports.add(conn.raddr.port)
  32.         except psutil.NoSuchProcess:
  33.             print(f"El proceso {exe_name} ha terminado.")
  34.             break
  35.         except Exception as e:
  36.             print(f"Error al actualizar conexiones: {e}")
  37.         time.sleep(UPDATE_INTERVAL)
  38.  
  39. # Función de callback que se llama por cada paquete capturado
  40. def packet_callback(packet):
  41.     if IP in packet and (TCP in packet or UDP in packet):
  42.         sport = packet.sport
  43.         dport = packet.dport
  44.         # Filtrar paquetes que utilizan los puertos del proceso monitoreado
  45.         if sport in target_ports or dport in target_ports:
  46.             # Extraer la carga útil (payload) si está presente
  47.             if Raw in packet:
  48.                 payload = packet[Raw].load
  49.                 # Buscar mensajes de chat en la carga útil
  50.                 try:
  51.                     chat_message = payload.decode('utf-8')
  52.                     # Detectar patrones que coinciden con mensajes de chat
  53.                     if re.match(r'^@[A-Z][A-Z].*\x02\x01$', chat_message):
  54.                         clean_message = chat_message.rstrip('\x02\x01')
  55.                         clean_message = clean_message[2:]
  56.                         ahora = datetime.datetime.now()
  57.                         ahora = ahora.strftime("%H:%M:%S")
  58.                         print(f"[{ ahora }] ~ {clean_message}")
  59.                         chat_messages.append(chat_message)
  60.                 except UnicodeDecodeError:
  61.                     # Raro, pero puede pasar
  62.                     pass
  63.  
  64. # Obtener el PID del ejecutable
  65. pid = get_pid_by_name(exe_name)
  66.  
  67. if pid is None:
  68.     print(f"No se encontró el proceso {exe_name}.")
  69. else:
  70.     print(f"Monitoreando el proceso {exe_name} con PID {pid} ~ Made with <3 by Natural")
  71.  
  72.     # Iniciar el hilo para actualizar las conexiones del proceso
  73.     thread = threading.Thread(target=update_connections, args=(pid,), daemon=True)
  74.     thread.start()
  75.     print('- Por algun motivo que aun no detecto, pueden salir caracteres raros al inicio.')
  76.     print('- El usuario que envia el mensaje aun no es detectado.')
  77.     print('- En algunos momentos detecta usuarios conectandose y envia mensajes raros.')
  78.     print('Requiere ser ejecutado como administrador...')
  79.  
  80.  
  81.     # Iniciar la captura de paquetes
  82.     sniff(prn=packet_callback, store=0)
  83.  
  84. # Puedes acceder a los mensajes de chat guardados en la variable chat_messages
  85. # Imprimir los mensajes de chat al final (por ejemplo, al detener el script)
  86. for message in chat_messages:
  87.     print(message)
  88.  
Advertisement
Add Comment
Please, Sign In to add comment