Files
2026-04-23 18:00:21 +02:00

2.4 KiB
Raw Permalink Blame History

The socket module is where Python stops being polite and starts speaking raw network 🧩📡 Heres a clean, practical cheat sheet youll actually use when building cyber tools.


🐍 socket Cheat Sheet (Cybersecurity Edition)

🔌 Create a Socket

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • AF_INET → IPv4
  • SOCK_STREAM → TCP
  • (use SOCK_DGRAM for UDP)

🌐 Connect to a Target (Client)

s.connect(("127.0.0.1", 80))

👉 Used in:

  • Port scanners
  • Banner grabbing

📤 Send Data

s.send(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
  • Must be bytes (b"")

📥 Receive Data

response = s.recv(1024)
print(response.decode())
  • 1024 = buffer size

Close Connection

s.close()

🔍 Port Scanner Example (core pattern)

import socket

target = "127.0.0.1"

for port in range(1, 1025):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(2)

    result = s.connect_ex((target, port))

    if result == 0:
        print(f"Port {port} is open")

    s.close()

🔥 Key trick:

  • connect_ex() returns 0 if open (no crash, cleaner)

⏱️ Timeout (avoid freezing forever)

s.settimeout(1)

Without this, your scanner becomes a fossil 🦴


🖥️ Simple Server (Listener)

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", 4444))
s.listen(1)

conn, addr = s.accept()
print(f"Connection from {addr}")

data = conn.recv(1024)
print(data.decode())

conn.close()

👉 Used in:

  • Backdoor simulations
  • Reverse shells (ethical labs only)

📡 UDP Socket (connectionless)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.sendto(b"Hello", ("127.0.0.1", 53))

🧠 Useful Methods Quick List

  • socket() → create socket
  • connect() → connect to server
  • connect_ex() → safer connect
  • send() / sendall() → send data
  • recv() → receive data
  • bind() → attach to IP/port
  • listen() → wait for connections
  • accept() → accept connection
  • close() → close socket

⚠️ Common Mistakes

  • Forgetting .close() → zombie sockets
  • Not using timeout → slow scans
  • Sending string instead of bytes → 💥 error
  • Scanning too fast → gets blocked