[Source Code]DDos Protect

06/23/2011 19:51 [LS]Michael#1
Hallo Elitepvpers,


Ich Wollte hier mal da ich an der Beta Version von mein Dos Protect nicht weiter coden werde sondern mit der anderen version anfange, habe ich mich entschlossen Den source Code zu Relasen.

Der Haupt Exe
Code:
#AutoIt3Wrapper_Icon=..\Icon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Run_Obfuscator=y
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <Math.au3>
#include <GuiListView.au3>
#include <Constants.au3>

Global $max = "", $cheksum = ""
Global $create = "0"

$Form1 = GUICreate("Lucidsoft - DDoS Protection © by Lucidsoft | Coded by Michael", 609, 281, 195, 122)
GUICtrlCreateGroup("Incoming Connection", 8, 0, 241, 241)
$ListView1 = GUICtrlCreateListView("ID|Con", 16, 16, 226, 214)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 40)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Blocked Connection", 256, 0, 201, 241)
$ListView2 = GUICtrlCreateListView("ID", 264, 16, 186, 214)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Main Setting´s", 464, 0, 137, 169)
GUICtrlCreateLabel("Check Interval in msec:", 472, 16, 115, 17)
$Input1 = GUICtrlCreateInput("", 472, 40, 113, 21)
GUICtrlCreateLabel("Max Connection:", 472, 64, 84, 17)
$Input2 = GUICtrlCreateInput("", 472, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Save", 472, 136, 123, 25)
GUICtrlCreateLabel("Port:", 480, 112, 28, 17)
$Input3 = GUICtrlCreateInput("", 520, 112, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Manual Block", 464, 168, 137, 97)
$Button2 = GUICtrlCreateButton("Block", 472, 224, 59, 25)
$Button3 = GUICtrlCreateButton("Deblock", 536, 224, 59, 25)
$IPAddress1 = _GUICtrlIpAddress_Create($Form1, 472, 192, 122, 21)
_GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button4 = GUICtrlCreateButton("Start", 8, 248, 139, 25)
$Button5 = GUICtrlCreateButton("Stop", 152, 248, 139, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button6 = GUICtrlCreateButton("Login", 296, 248, 163, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
_startsettings()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Button1
			IniWrite("Log\Settings.ls", "Time", "Interval", GUICtrlRead($Input1))
			IniWrite("Log\Settings.ls", "Con", "MAX", GUICtrlRead($Input2))
			IniWrite("Log\Settings.ls", "Port", "Port", GUICtrlRead($Input3))
			$max = GUICtrlRead($Input2)
		Case $Button2
			_checkNONBlockList(_GUICtrlIpAddress_Get($IPAddress1))
			_ReloadListBlock()
		Case $Button3
			_deletblock(_GUICtrlIpAddress_Get($IPAddress1))
			_ReloadListBlock()
		Case $Button4
			GUICtrlSetState($Button4, $GUI_DISABLE)
			GUICtrlSetState($Button5, $GUI_ENABLE)
			AdlibRegister("_LoadConList", GUICtrlRead($Input1))
		Case $Button5
			GUICtrlSetState($Button5, $GUI_DISABLE)
			GUICtrlSetState($Button4, $GUI_ENABLE)
			AdlibUnRegister("_LoadConList")
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

Func _deletblock($ip)
	$CMD = Run(@ComSpec & " /c netsh ipsec static delete filter filterlist=DDoS-Protect srcaddr=" & $ip & " dstaddr=Me", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Dim $aRecords
	If Not _FileReadToArray("Log\Block.ini", $aRecords) Then
	Else
		FileDelete("Log\Block.ini")
		For $x = 1 To $aRecords[0]
			If $aRecords[$x] = $ip Then
			Else
				FileWrite("Log\Block.ini", $aRecords[$x] & @CRLF)
			EndIf
		Next
	EndIf
EndFunc   ;==>_deletblock

Func _startsettings()
	DirCreate("Log")
	If FileExists("Log\Settings.ls") Then
		$create = IniRead("Log\Settings.ls", "Create", "Policy", "")
		GUICtrlSetData($Input1, IniRead("Log\Settings.ls", "Time", "Interval", ""))
		GUICtrlSetData($Input2, IniRead("Log\Settings.ls", "Con", "MAX", ""))
		GUICtrlSetData($Input3, IniRead("Log\Settings.ls", "Port", "Port", ""))
		$max = IniRead("Log\Settings.ls", "Con", "MAX", "")
	EndIf

	If FileExists("Log\Block.ini") Then
		_Listblock()
	EndIf

	If $create = 0 Then
		_createIPsec()
	EndIf
EndFunc   ;==>_startsettings

Func _createIPsec()
	Run(@ComSpec & " /c netsh ipsec static add filterlist name=DDoS-Protect", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(1000)
	Run(@ComSpec & " /c netsh ipsec static add filteraction name=BlockIP action=block", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(1000)
	Run(@ComSpec & " /c netsh ipsec static add filter filterlist=DDoS-Protect srcaddr=192.168.192.100 dstaddr=Me", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(1000)
	Run(@ComSpec & " /c netsh ipsec static add policy name=DDoS-Protec-Policy assign=yes", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(1000)
	Run(@ComSpec & " /c netsh ipsec static add rule name=DDoSProtectRule policy=DDoS-Protec-Policy filterlist=DDoS-Protect filteraction=BlockIP", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(100)
	Run(@ComSpec & " /c netsh ipsec static delete filter filterlist=DDoS-Protect srcaddr=192.168.192.100 dstaddr=Me", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Sleep(1000)
	IniWrite("Log\Settings.ls", "Create", "Policy", "1")
EndFunc   ;==>_createIPsec

Func _Listblock()
	If FileExists("Log\Block.ini") Then
		_GUICtrlListView_DeleteAllItems($ListView2)
		Dim $aRecords
		If Not _FileReadToArray("Log\Block.ini", $aRecords) Then
		Else
			If _FileCountLines("Log\Block.ini") > 0 Then
				For $x = 1 To $aRecords[0]
					GUICtrlCreateListViewItem($aRecords[$x], $ListView2)
				Next
			EndIf
		EndIf
	EndIf
EndFunc   ;==>_Listblock

Func _ReloadListBlock()
	_Listblock()
EndFunc   ;==>_ReloadListBlock

Func _LoadConList()
	$incon = ""
	If ProcessExists("Read.exe") Then
		ProcessClose("Read.exe")
		FileDelete("Log\Conn.ini")
		Run("Log\Read.exe", "Log\")
	Else
		FileDelete("Log\Conn.ini")
		Run("Log\Read.exe", "Log\")
	EndIf
	Sleep(250)
	Dim $aRecords
	If Not _FileReadToArray("Log\Conn.ini", $aRecords) Then
	Else
		$fi = FileRead("Log\Conn.ini")
		For $x = 1 To $aRecords[0]
			$aResult = StringRegExp($fi, $aRecords[$x], 3)

			$check = _GUICtrlListView_FindInText($ListView1, $aRecords[$x])
			If $check = "-1" Then
				GUICtrlCreateListViewItem($aRecords[$x] & "|" & UBound($aResult), $ListView1)
				$incon &= $aRecords[$x] & "|"
			Else
				$incon &= $aRecords[$x] & "|"
				$itemtext = _GUICtrlListView_GetItemTextString($ListView1, $check)
				$str = StringSplit($itemtext, "|")
				If $str[2] <> UBound($aResult) Then
					_GUICtrlListView_SetItemText($ListView1, $check, UBound($aResult), 1)
				EndIf
			EndIf

		Next

		$items = _GUICtrlListView_GetItemCount($ListView1)
		For $y = 0 To $items
			$search = _GUICtrlListView_GetItemText($ListView1, $y)
			$string = StringInStr($incon, $search)
			If $string = 0 Then
				_GUICtrlListView_DeleteItem($ListView1, $y)
			EndIf
		Next
	EndIf
	_CheckBlock()
EndFunc   ;==>_LoadConList

Func _CheckBlock()
	$max = IniRead("Log\Settings.ls", "Con", "MAX", "")
	$items = _GUICtrlListView_GetItemCount($ListView1)
	For $y = 0 To $items - 1
		$ip = _GUICtrlListView_GetItemText($ListView1, $y)
		$count = _GUICtrlListView_GetItemText($ListView1, $y, 1)
		If Int($count) >= Int($max) Then
			_checkNONBlockList($ip)
		EndIf
	Next

EndFunc   ;==>_CheckBlock

Func _checkNONBlockList($ip)
	$check = ""
	Dim $aRecords
	If Not _FileReadToArray("Log\White.ini", $aRecords) Then
	EndIf
	If _FileCountLines("Log\White.ini") > 0 Then
		For $x = 1 To $aRecords[0]
			If $ip = $aRecords[$x] Then
				$check = "1"
				ExitLoop
			Else
				$check = "2"
			EndIf
		Next
		If $check = 2 Then
			_checkBlockIP($ip)
		EndIf
	EndIf
EndFunc   ;==>_checkNONBlockList

Func _checkBlockIP($ip)
	$cheksum = ""
	Dim $aRecords
	If Not _FileReadToArray("Log\Block.ini", $aRecords) Then
	Else
		If _FileCountLines("Log\Block.ini") > 0 Then
			For $x = 1 To $aRecords[0]
				If $aRecords[$x] = $ip Then
					$cheksum = "2"
					ExitLoop
				Else
					$cheksum = "1"
				EndIf
			Next
			If $cheksum = 1 Then
				_Add($ip)
			EndIf
		EndIf
	EndIf
EndFunc   ;==>_checkBlockIP

Func _Add($ip)
	$command2 = "netsh ipsec static add filter filterlist=DDoS-Protect srcaddr=" & $ip & " dstaddr=Me"
	FileWrite("Log\Block.ini", $ip & @CRLF)
	GUICtrlCreateListViewItem($ip, $ListView2)
	$CMD = Run(@ComSpec & " /c " & $command2, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
EndFunc   ;==>_Add

Func _ReduceMem()
	Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
	Return SetError(@error, @extended, $ai_Return[0])
EndFunc   ;==>_ReduceMem
Der Read exe

Code:
#NoTrayIcon
#RequireAdmin
#AutoIt3Wrapper_Icon=..\..\Icon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Run_Obfuscator=y
#include <Constants.au3>
_check()

Func _check()
	$port = IniRead("Settings.ls", "Port", "Port", "")
	$read = _CMDRead("netstat -n")
	$str = StringStripWS($read, 4)
	$str2 = StringSplit($str, " ")
	For $x = 1 To $str2[0]
		$strstr = StringInStr($str2[$x], ":" & $port)
		If $strstr > 0 Then
			If StringRegExp($str2[$x + 1], "^[.0-9]", 0, 1) Then
				$strr = StringSplit($str2[$x + 1], ":")
				FileWrite("Conn.ini", $strr[1] & @CRLF)
			EndIf
		EndIf
	Next
	_ReduceMem()
EndFunc   ;==>_check

Func _CMDRead($command)
	Local $line
	$CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	While 1
		$line &= StdoutRead($CMD)
		If @error Then ExitLoop
	WEnd
	Return $line

EndFunc   ;==>_CMDRead

Func _GetMem()
	Local Static $LastMem = -1
	Local $Diff = 0
	Local $aStats = ProcessGetStats()
	If $LastMem <> -1 Then $Diff = $aStats[0] - $LastMem
	$LastMem = $aStats[0]
	Return StringFormat("%09d   (%+010d)", $aStats[0], $Diff)
EndFunc   ;==>_GetMem

Func _ReduceMem()
	Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
	Return SetError(@error, @extended, $ai_Return[0])
EndFunc   ;==>_ReduceMem
ich wünsche allen Hobby codern Viel Spaß an den Code ^^