zoukankan      html  css  js  c++  java
  • Python 局域网主机存活扫描

    #! python
    # -*- coding: utf-8 -*-
    __author__ = 'Deen'
    
    import os
    import threading
    import argparse
    
    
    # 从网关获取所有IP,如192.168.1.1-255,返回一个list存储
    def get_all_ip(gateway):
        ip = list()
        # 改进,支持指定范围IP
    
        ip_prefix = gateway.split('.')
    
        # 对输入的gateway进行判断
        # 第一种输入192.168.1.1-255
        if '-' in gateway:
            parts = ip_prefix[3].split('-')
            start = int(parts[0])
            end = int(parts[1])
            prefix = ip_prefix[0] + '.' + ip_prefix[1] + '.' + ip_prefix[2] + '.'
            for i in range(start, end):
                ip.append(prefix + str(i))
        # 第二种只输入一个ip
        else:
            ip_prefix = ip_prefix[0] + '.' + ip_prefix[1] + '.' + ip_prefix[2] + '.'
            for i in range(255):
                ip.append(ip_prefix + str(i))
    
        # 返回一个包含所有IP的list
        return ip
    
    
    def ping(ip):
        # 执行系统命令以一个管道返回
        output = os.popen('ping -n 2 %s' % ip)
        result = output.read().encode('utf-8')
        # 返回命令执行结果
        # print result
        # 根据返回结果当中是否包含关键词TTL 进行判断
        if 'TTL' in result:
            print('[-] ' + ip + '	is up')
    
    
    def main(ip):
        # 采用多线程,创建一个线程池
        threads = []
        ips = get_all_ip(ip)
        for ip in ips:
            # 加入线程
            t = threading.Thread(target=ping, args=(ip,))
            threads.append(t)
        print '[+] Scaning start'
        for i in threads:
            i.start()
        for i in threads:
            t.join()
    
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='This a script to scan the LAN')
        parser.add_argument('ip', default='192.168.1.1', help='Eg:  192.168.1.1 or 192.168.1.1-33')
        args = parser.parse_args()
        main(args.ip)
    

    写得比较简单,还有还多要写

    TO DO

    • 返回目标信息,像scanport一样
    • 如果是wifi,进行ddos攻击,让目标下线
  • 相关阅读:
    数据库
    Python基础
    flask 文件的上传下载和excel操作
    Django 知识点补充
    Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议
    Memcached 补充
    websocket基本概念
    Tornado 异步非阻塞
    Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架
    functools 和 itertools
  • 原文地址:https://www.cnblogs.com/deen-/p/7271618.html
Copyright © 2011-2022 走看看