sniff.py
import socket
HOST = socket.gethostbyname(socket.gethostname())
#gethostname 返回当前运行python解释器的机器名
#gethostbyname 将主机名转换成IPv4格式地址,
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
#这是socket的类型,采用raw类型的套接字,接收 IP报文, 还可以是 IPPROTO_TCP报文
s.bind((HOST, 0))
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# 设置给定套接字选项的值
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# ioctl WSAIoctl 系统接口的有限接口
print(s.recvfrom(65565))
#65565 是 bufsize的大小
# recvfrom 从套接字接收数据。返回值是一对 (bytes, address),其中 bytes 是字节对象,表示接收到的数据,address 是发送端套接字的地址
# 第一个字段里面的数据就是用wireshark看到的ip数据报
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)