slav0nic's blog

Заметки о python, linux и других занимательных вещах

Python sniffer :)

воть, ради баловства, давно хотел с raw socket'aми побаловаться)
3й параметр в s = socket.socket(…) — тип протокола (6 — tcp, 1 -icmp). можно получить через:

print socket.getprotobyname("tcp")

 

ну и в таком духе работает только под рутом и тока в линуксе (наверно):


import socket
from select import select
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, 6)
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
s_list = []
s_list.append(s)
while len(s_list)>0:
sockets = select(s_list, [], [], 0)
for s_ready in sockets:
print repr(s.recv(1024))

web.py