首页 > 编程语言 >python 混杂模式

python 混杂模式

时间:2022-11-09 19:57:05浏览次数:50  
标签:__ 混杂 python IP RCVALL 模式 name sniffer socket

import socket
import os
 
host = '10.81.226.234'
 
def main():
    # 判断系统是否为windows
    if os.name == 'nt':
        # windwos允许嗅探任何协议
        socket_protocol = socket.IPPROTO_IP
    else:
        # Linux强制指定一个协议进行嗅探
        socket_protocol = socket.IPPROTO_ICMP
 
    # 创建socket对象
    sniffer = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket_protocol)
    sniffer.bind((host,0))
    # 设置包含IP头
    sniffer.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
 
    # 对windows机器 额外启用混杂模式
    if os.name == 'nt':
        sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)
 
    # 读取一个数据包
    print(sniffer.recvfrom(65565))
 
    # 关闭混杂模式
    if os.name == 'nt':
        sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_OFF)
 
 
if __name__ == '__main__':
    main()

host变量为本机IP地址,然后创建一个socket对象,使用bind函数绑定socket对象,使用setsockopt函数修改socket设置,使其在抓包时包含IP头部。之后会判断平台是否为windows,如果是则启动网卡的混杂模式。

标签:__,混杂,python,IP,RCVALL,模式,name,sniffer,socket
From: https://www.cnblogs.com/xkdn/p/16874946.html

相关文章