2.4 KiB
2.4 KiB
The socket module is where Python stops being polite and starts speaking raw network 🧩📡
Here’s a clean, practical cheat sheet you’ll 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→ IPv4SOCK_STREAM→ TCP- (use
SOCK_DGRAMfor 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()returns0if 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 socketconnect()→ connect to serverconnect_ex()→ safer connectsend()/sendall()→ send datarecv()→ receive databind()→ attach to IP/portlisten()→ wait for connectionsaccept()→ accept connectionclose()→ close socket
⚠️ Common Mistakes
- Forgetting
.close()→ zombie sockets - Not using timeout → slow scans
- Sending string instead of bytes → 💥 error
- Scanning too fast → gets blocked