zoukankan      html  css  js  c++  java
  • Python报文操作模块scapy

    pip install scapy
    -----------------------------------------------
    import scapy
    '''
    介绍:
    Scapy 是一个强大的操纵报文的交互程序。
    它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。
    Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。
    它可以代替hping,arpspoof,arp-sk,arping,p0f 甚至是部分的Namp,tcpdump和tshark 的功能

    '''
    -----------------------------------------------
    中文文档:https://www.ctolib.com/docs-scapy-doc-c-Introduction.html
    demo:
    from scapy.all import *
    from scapy import all
    from scapy.layers.inet import IP,ICMP
    import logging
    from random import randint
    '''
    介绍:
    Scapy 是一个强大的操纵报文的交互程序。
    它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。
    Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。
    它可以代替hping,arpspoof,arp-sk,arping,p0f 甚至是部分的Namp,tcpdump和tshark 的功能
    中文文档:https://www.ctolib.com/docs-scapy-doc-c-Introduction.html
    '''
    
    logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
    
    def start(host):
        id_ip = randint(1,65535)#ip_id
        id_ping = randint(1,65535)#ping_id
        seq_ping = randint(1,65535)#ping序列号
        #构造ping数据包
        packet = IP(dst=host,ttl=1,id=id_ip,)/ICMP(id=id_ping,seq=seq_ping)/b'hello man'
        #获取响应信息,超时2秒,开启详细信息。
        ping = sr1(packet,timeout=2,verbose=True)
        #sr1:发送三层数据包,只等待接受一个数据包响应
        if ping:
            ping.show()
            os._exit(3)
    
    
    if __name__ == '__main__':
        start(sys.argv[1])
    ping——demo
    import ipaddress
    import time
    from multiprocessing import Process,Queue
    import sys
    from Scapy_demo.ping_demo import start
    
    def more_start(network):
        net = ipaddress.ip_network(network)
        ip_process = {}
        for ip in net:
            ip_addr = str(ip)
            ping_one = Process(target=start,args=(ip_addr,))
            # ping_one.join()
            ping_one.start()
            ip_process[ip_addr] = ping_one
        ip_list = []
        for ip,process in ip_process.items():
            if process.exitcode == 3 :
                ip_list.append(ip)
            else:
                process.terminate()
        return sorted(ip_list)
    
    if __name__ == '__main__':
        begin = time.time()
        active_ip = more_start(sys.argv[1])
        print("*****ACTIVE IP*****")
        for ip in active_ip:
            print(ip)
        end = time.time()
        print(end-begin)

    更多内容需要对照官方文档自学

     
  • 相关阅读:
    论云端智能相册应用的架构设计及应用
    《架构漫谈》阅读笔记02
    论软件体系架构之质量属性
    《架构漫谈》阅读笔记01
    tensorflow-gpu:Could not load dynamic library 'cusolver64_10.dll'; dlerror: cusolver64_10.dll not found
    tensorflow线性回归
    【阿里巴巴国际站】22届实习生招聘开始啦!
    vue-ref、js获取dom子元素
    echarts地图tooltip添加标注
    echarts 图表坐标axisLabel格式化文字
  • 原文地址:https://www.cnblogs.com/cou1d/p/14315648.html
Copyright © 2011-2022 走看看