Upload files to "/"

This commit is contained in:
meowmycks 2025-02-08 10:45:26 -05:00
parent 504dd0f912
commit c7044d8091
4 changed files with 200 additions and 0 deletions

102
fake_snmp_server.py Normal file
View File

@ -0,0 +1,102 @@
import socket
import struct
import threading
# Configuration
SNMP_PORT = 161
PRINTER_NAME = "HP Color LaserJet Pro MFP M478"
FAKE_SYS_DESCRIPTION = "HP Color LaserJet Pro MFP M478 - Firmware 002_2445A"
FAKE_SYS_NAME = "HP-LaserJet-4"
# SNMP OIDs to mimic a real printer
SNMP_OIDS = {
"1.3.6.1.2.1.1.1.0": FAKE_SYS_DESCRIPTION, # sysDescr
"1.3.6.1.2.1.1.5.0": FAKE_SYS_NAME, # sysName
}
# Function to handle SNMP requests
def encode_snmp_response(request_data):
try:
# Extract SNMP version & community string
snmp_version = request_data[6] # SNMPv1
community_len = request_data[7] # Length of the community string
community = request_data[8:8+community_len].decode()
# Extract the OID (simplified)
oid_raw = request_data[-6:]
oid = ".".join(str(b) for b in oid_raw)
if oid in SNMP_OIDS:
response_value = SNMP_OIDS[oid]
else:
response_value = "OID Not Found"
# Build a proper SNMP Get-Response packet using ASN.1
response_packet = struct.pack("!B", 0x30) + struct.pack("!B", len(response_value) + 20)
response_packet += struct.pack("!B", 0x02) + struct.pack("!B", 1) + struct.pack("!B", 0x00) # SNMP Version 1
response_packet += struct.pack("!B", 0x04) + struct.pack("!B", len(community)) + community.encode() # Community String
response_packet += struct.pack("!B", 0xA2) + struct.pack("!B", len(response_value) + 10) # SNMP Get-Response
response_packet += struct.pack("!B", 0x02) + struct.pack("!B", 1) + struct.pack("!B", 0x01) # Request ID
response_packet += struct.pack("!B", 0x02) + struct.pack("!B", 1) + struct.pack("!B", 0x00) # Error status = 0
response_packet += struct.pack("!B", 0x02) + struct.pack("!B", 1) + struct.pack("!B", 0x00) # Error index = 0
response_packet += struct.pack("!B", 0x30) + struct.pack("!B", len(response_value) + 6) # VarBindList
response_packet += struct.pack("!B", 0x30) + struct.pack("!B", len(response_value) + 4) # VarBind
response_packet += struct.pack("!B", 0x06) + struct.pack("!B", len(oid)) + oid.encode() # OID
response_packet += struct.pack("!B", 0x04) + struct.pack("!B", len(response_value)) + response_value.encode() # Value
return response_packet
except Exception as e:
print(f"[-] SNMP Encoding Error: {e}")
return None
# Function to handle UDP SNMP requests
def handle_snmp_udp(sock):
while True:
try:
data, addr = sock.recvfrom(1024) # Receive SNMP request
response = encode_snmp_response(data)
if response:
sock.sendto(response, addr)
except Exception as e:
print(f"[-] SNMP UDP Error: {e}")
# Function to handle TCP SNMP requests
def handle_snmp_tcp(client_socket, addr):
try:
data = client_socket.recv(1024) # Read incoming SNMP request
response = encode_snmp_response(data)
if response:
client_socket.sendall(response)
except Exception as e:
print(f"[-] SNMP TCP Error: {e}")
finally:
client_socket.close()
# Function to start the fake SNMP service
def start_fake_snmp_service():
# Create UDP socket
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_sock.bind(("0.0.0.0", SNMP_PORT))
# Create TCP socket
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_sock.bind(("0.0.0.0", SNMP_PORT))
tcp_sock.listen(5)
print(f"[*] Fake SNMP printer service running on UDP & TCP port {SNMP_PORT}")
# Start UDP handler in a thread
udp_thread = threading.Thread(target=handle_snmp_udp, args=(udp_sock,))
udp_thread.daemon = True
udp_thread.start()
# Handle TCP connections
while True:
client_socket, addr = tcp_sock.accept()
threading.Thread(target=handle_snmp_tcp, args=(client_socket, addr)).start()
# Ensure script can be run standalone OR imported
if __name__ == "__main__":
start_fake_snmp_service()

59
fake_telnet_server.py Normal file
View File

@ -0,0 +1,59 @@
import socket
import threading
import time
# Configuration
TELNET_PORT = 23
PRINTER_NAME = "HP Color LaserJet Pro MFP M478"
# Fake HP Printer Banner (as shown in the uploaded image)
BANNER = """\r
********************************************************************************\r
* Copyright (c) 2010-2024 Hewlett Packard Enterprise Development LP *\r
* *\r
* Without the owner's prior written consent, *\r
* no decompiling or reverse-engineering shall be allowed. *\r
********************************************************************************\r
\r
Login authentication\r
\r
Password: """
# Function to handle each Telnet connection
def handle_telnet_client(client_socket, address):
print(f"[+] Telnet connection from {address}")
try:
# Send banner and prompt for password
client_socket.sendall(BANNER.encode())
# Read password input (won't authenticate)
password = client_socket.recv(1024).decode(errors="ignore").strip()
# Always fail authentication
time.sleep(1) # Simulate processing delay
client_socket.sendall(b"\nLogin incorrect.\n")
time.sleep(1)
client_socket.close()
except Exception as e:
print(f"[-] Telnet Error: {e}")
finally:
client_socket.close()
# Function to start the fake Telnet server
def start_fake_telnet_service():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(("0.0.0.0", TELNET_PORT))
server_socket.listen(5)
print(f"[*] Fake Telnet printer service running on port {TELNET_PORT}")
while True:
client_socket, addr = server_socket.accept()
threading.Thread(target=handle_telnet_client, args=(client_socket, addr)).start()
# Ensure script can be run standalone OR imported
if __name__ == "__main__":
start_fake_telnet_service()

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

39
main.py Normal file
View File

@ -0,0 +1,39 @@
import time
import threading
import signal
from fake_pjl_server import start_fake_pjl_service
from fake_lpd_server import start_fake_lpd_service
from fake_cups_server import start_fake_cups_service
from fake_http_server import start_fake_http_auth
from fake_telnet_server import start_fake_telnet_service
from fake_snmp_server import start_fake_snmp_service
# Event to manage service shutdown
shutdown_event = threading.Event()
# Function to clean up when stopping
def shutdown_handler(signum, frame):
print("\n[*] Shutting down all fake services...")
shutdown_event.set() # Signal all threads to exit
# Register signal handlers for stopping the service
signal.signal(signal.SIGTERM, shutdown_handler) # Stop from systemctl stop
signal.signal(signal.SIGINT, shutdown_handler) # Stop with Ctrl+C
# Start all fake printing services in the background
if __name__ == "__main__":
threading.Thread(target=start_fake_pjl_service, daemon=True).start()
threading.Thread(target=start_fake_lpd_service, daemon=True).start()
threading.Thread(target=start_fake_cups_service, daemon=True).start()
threading.Thread(target=start_fake_http_auth, daemon=True).start()
threading.Thread(target=start_fake_telnet_service, daemon=True).start()
threading.Thread(target=start_fake_snmp_service, daemon=True).start()
time.sleep(1)
print("[*] Fake services are running.")
# Keep the script alive until a termination signal is received
while not shutdown_event.is_set():
time.sleep(1) # Wait loop to keep the main thread alive
print("[*] Fake printer services stopped.")