zoukankan      html  css  js  c++  java
  • 第8章:网络

    1.列出网络上所有活跃的主机

    1).使用Python判断主机是否活跃

    import subprocess
    import threading
    
    def is_reacheable(ip):
        if subprocess.call(["ping", "-c", "10", ip]):
            print("{0} is alive".format(ip))
        else:
            print("{0} is unreacheable".format(ip))
    
    def main():
        with open('ips.txt') as f:
            lines = f.readlines()
            threads = []
            for line in lines:
                thr = threading.Thread(target=is_reacheable, args=(line,))
                thr.start()
                threads.append(thr)
    
            for thr in threads:
                thr.join()
    
    if __name__ == '__main__':
        main()

    2).使用生产者消费者模型减少线程的数量

    import subprocess
    import threading
    from Queue import Queue
    from Queue import Empty
    
    def call_ping(ip):
        if subprocess.call(["ping", "-c", "10", ip]):
            print("{0} is alive".format(ip))
        else:
            print("{0} is unreacheable".format(ip))
    
    def is_reacheable(q):
        try:
            while True:
                ip = q.get_nowait()
                call_ping(ip)
        except Empty:
            pass
    
    def main():
        q = Queue()
        with open('ips.txt') as f:
            for line in f:
                q.put(line)
    
            threads = []
            for i in range(10):
                thr = threading.Thread(target=is_reacheable, args=(q,))
                thr.start()
                threads.append(thr)
    
            for thr in threads:
                thr.join()
    
    if __name__ == '__main__':
        main()

    2.端口扫描

    1).使用Python编写端口扫描器

    使用简单的socket接口编写一个端口扫描器
    from socket import *
    
    def conn_scan(host, port):
        conn = socket(AF_INET, SOCK_STREAM)
        try:
            conn.connect((host, port))
            print(host, port, ' is available')
        except Exception as e:
            print(host, port, ' is not available')
        finally:
            conn.close()
    
    def main():
        host = "192.168.147.135"
        for port in range(3000,4000):
            conn_scan(host, port)
    
    if __name__ == '__main__':
        main()
    使用telnet形式
    import telnetlib
    
    def conn_scan(host, port):
        t = telnetlib.Telnet()
        try:
            t.open(host, port, timeout=1)
            print(host, port, ' is available')
        except Exception as e:
            print(host, port, ' is not available')
        finally:
            t.close()
    
    def main():
        host = "192.168.147.135"
        for port in range(3000,4000):
            conn_scan(host, port)
    
    if __name__ == '__main__':
        main()

    2).使用nmap扫描端口

    主机发现:
    nmap -sP 192.168.147.*
    端口扫描:
    nmap 192.168.147.135
    版本侦测:
    nmap -sV 192.168.147.135
    操作系统检测:
    nmap -sO 192.168.147.135

    3).使用python-nmap进行端口扫描

    Python-nmap是对nmap的Python封装
    pip install python-nmap
    import nmap
    nm = nmap.PortScanner()
    nm.scan('192.168.147.135','22-5000')

    3.使用IPy进行IP地址管理

        IPy模块是一个处理IP地址的模块

        pip install ipy

    4.使用dnspython解析DNS

        dnspython是Python实现的一个DNS工具集

        pip install dnspython

    5.网络嗅探器Scapy

    1).Scapy简介与安装

        Scapy是一个Python语言编写的工具,使用Scapy可以发送、嗅探、剖析和伪造网络数据报

        pip install scapy

    2).Scapy的基本使用

    ls()显示Scapy支持的所有协议
    lsc()列出Scapy支持的所有命令
    conf显示所有的配置信息
    help(cmd)显示某一命令的使用帮助等
  • 相关阅读:
    win7文件搜索技巧
    【SpringCloud】Zuul网关入门(十五)
    【SpringCloud】Hystrix仪表板(Dashboard)(十四)
    【SpringCloud】Hystrix工作原理(十三)
    【SpringCloud】Hystrix服务隔离(十二)
    【SpringCloud】Hystrix服务熔断(十一)
    【SpringCloud】Hystrix服务降级(十)
    【SpringCloud】OpenFeign服务超时与日志输出(九)
    【SpringCloud】OpenFeign服务调用(八)
    【SpringCloud】自定义Ribbon均衡策略(七)
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11353766.html
Copyright © 2011-2022 走看看