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攻击,让目标下线
  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/deen-/p/7271618.html
Copyright © 2011-2022 走看看