zoukankan      html  css  js  c++  java
  • 我的python渗透测试工具之主机嗅探

      嗅探工具的主要目标是基于UDP发现目标网络中的存活主机,选择UDP的原因是UDP访问过程开销小。

      由于很多的操作系统在处理UDP端口的闭合时都会存在一个共性,我们也正是利用这个共性来开展确定此IP上是否有存活主机。

      当我们发送一个数据包给主机上的一个以关闭的UDP接口时,如果此接口返回一个ICMP的话,就表示目标主机存活,如果无返回,说明目标主机不存在 。

      

    #coding = utf-8
    import os
    import socket
    
    #目标主机,视情况而定
    host = "192.168.1.1   ""
    
    #创建原始套接字,然后绑定在公开接口上
    if os.name == "nt":
            socket_protocol = socket.IPPROTO_IP
    else:
            socket_protocol = socket.IPPROTO_ICMP
    
    sniffer = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket_protocol)
    sniffer.bind((host,0))
    
    #设置在捕获的I数据包中包含IP头
    sniffer.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
    
    #在windos平台上,需要设置IOCTL以启用会混杂模式
    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)

    IOCTL(输入/输出控制):是用户隔离模式下与内核模式下组件进行通信的方式的组件进行通信的方式.

    混杂模式:是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是他。可供管理员进行网络诊断,在这里我们利用其特性.

  • 相关阅读:
    iOS内存管理机制
    iOS开发之XML和JSON数据解析
    Ubuntu小点汇总,更新中...
    Android与服务器的简单通讯
    Gedit乱码问题
    Eclipse软件问题-方案积累
    开放接口使用积累
    定制知识积累
    Android小代码-技巧积累
    Android初学点滴积累(操作篇)
  • 原文地址:https://www.cnblogs.com/cuiyuanzhang/p/9462437.html
Copyright © 2011-2022 走看看