Что нового

[Процессы] Отключить интернет для определенного процесса

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Всем привет :smile:
Мне нужно:
1. Отключить/Включить интернет для выбранного процесса(Уже запушенного)
Например у меня запущена: icq.exe - Она пользуется интернетом...
А я нажал на кнопку в скрпите и ХРЯСЬ она не может пользоватся интернетом, НО после того как процесс перезагрузить то процесс должен Пользоватся интернетом... Сообственно все :smile:
Надеюсь вы понели что я имею ввиду :smile:
Жду ответов...
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Любой файрвол.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Мне нужно чтобы это скрипт делал!!! :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Точно не уверен, но AutoIt может слушать порты прослушиваемые другими программами? как мне известно, после прочтения данных, буфер очищается.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Все правильно, я слушаю порты AutoIT'ом и если я видел что подозрительная программа пользуется интернетом я отключаю ей доступ в интернет...
Вот я и спрашиваю: 'Как отключить интернет для выбранного процесса?'... :smile:


Добавлено:
Сообщение автоматически объединено:

Жду помощи :smile:
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Насколько я помню в настройке штатного файервола существует настройка разрешения портов для определенных программ.
Данную настройку можно проводить и через консоль.
Команда netsh firewall set portopening управляет данными настройками.
По работе с данной командой можно заглянуть сюда
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
смотрим кто и куда подключен:
Код:
Func _GetTcpTable()

	Local $aCall = DllCall($hIPHLPAPI, "dword", "GetTcpTable", _
			"ptr*", 0, _
			"dword*", 0, _
			"int", 1)

	If @error Then
		Return SetError(1, 0, 0)
	EndIf

	If $aCall[0] <> 122 Then ; ERROR_INSUFFICIENT_BUFFER
		Return SetError(2, 0, 0)
	EndIf

	Local $iSize = $aCall[2]

	Local $tByteStructure = DllStructCreate("byte[" & $iSize & "]")

	$aCall = DllCall($hIPHLPAPI, "dword", "GetTcpTable", _
			"ptr", DllStructGetPtr($tByteStructure), _
			"dword*", $iSize, _
			"int", 1)

	If @error Or $aCall[0] Then
		Return SetError(3, 0, 0)
	EndIf

	Local $tMIB_TCPTABLE_DWORDS = DllStructCreate("dword[" & Ceiling($iSize / 4) & "]", DllStructGetPtr($tByteStructure))

	Local $iTCPentries = DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, 1) ; number of entries
	Local $aTCPTable[$iTCPentries + 1][5]

	$aTCPTable[0][0] = "Connection state"
	$aTCPTable[0][1] = "Local IP"
	$aTCPTable[0][2] = "Local Port"
	$aTCPTable[0][3] = "Remote IP"
	$aTCPTable[0][4] = "Remote port"

	#cs
		$tMIB_TCPROW = DllStructCreate("dword State;" & _
		"dword LocalAddr;" & _
		"dword LocalPort;" & _
		"dword RemoteAddr;" & _
		"dword RemotePort")
	#ce

	Local $aState[12] = ["CLOSED", "LISTENING", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "CLOSE_WAIT", "CLOSING", "LAST_ACK", "TIME_WAIT", "DELETE_TCB"]

	Local $iOffset
	Local $iIP

	TCPStartup()

	For $i = 1 To $iTCPentries
		$iOffset = ($i - 1) * 5 + 1 ; going thru array of dwords

		$aTCPTable[$i][0] = $aState[DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 1) - 1] ; connection state text

		$iIP = DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 2)

		If $iIP = 16777343 Then
			$aTCPTable[$i][1] = "localhost (127.0.0.1)"
		ElseIf $iIP = 0 Then
			$aTCPTable[$i][1] = "Any local address"
		Else
			$aTCPTable[$i][1] = BitOR(BinaryMid($iIP, 1, 1), 0) & "." & BitOR(BinaryMid($iIP, 2, 1), 0) & "." & BitOR(BinaryMid($iIP, 3, 1), 0) & "." & BitOR(BinaryMid($iIP, 4, 1), 0)
			$aTCPTable[$i][1] = _IpToName($iIP) & " (" & $aTCPTable[$i][1] & ")"
		EndIf

		$aTCPTable[$i][2] = Dec(Hex(BinaryMid(DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 3), 1, 2)))

		If DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 1) < 3 Then
			$aTCPTable[$i][4] = "-"
			$aTCPTable[$i][3] = "-"
		Else
			$iIP = DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 4)
			$aTCPTable[$i][3] = BitOR(BinaryMid($iIP, 1, 1), 0) & "." & BitOR(BinaryMid($iIP, 2, 1), 0) & "." & BitOR(BinaryMid($iIP, 3, 1), 0) & "." & BitOR(BinaryMid($iIP, 4, 1), 0)
			$aTCPTable[$i][4] = Dec(Hex(BinaryMid(DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 5), 1, 2)))
		EndIf

	Next

	TCPShutdown()

	Return $aTCPTable

EndFunc   ;==>_GetTcpTable
Func _GetUdpTable()

	Local $aCall = DllCall($hIPHLPAPI, "dword", "GetUdpTable", _
			"ptr*", 0, _
			"dword*", 0, _
			"int", 1)

	If @error Then
		Return SetError(1, 0, 0)
	EndIf

	If $aCall[0] <> 122 Then ; ERROR_INSUFFICIENT_BUFFER
		Return SetError(2, 0, 0)
	EndIf

	Local $iSize = $aCall[2]

	Local $tByteStructure = DllStructCreate("byte[" & $iSize & "]")

	$aCall = DllCall($hIPHLPAPI, "dword", "GetUdpTable", _
			"ptr", DllStructGetPtr($tByteStructure), _
			"dword*", $iSize, _
			"int", 1)

	If @error Or $aCall[0] Then
		Return SetError(3, 0, 0)
	EndIf

	Local $tMIB_UDPTABLE_DWORDS = DllStructCreate("dword[" & Ceiling($iSize / 4) & "]", DllStructGetPtr($tByteStructure))

	Local $iUDPentries = DllStructGetData($tMIB_UDPTABLE_DWORDS, 1, 1) ; number of entries
	Local $aTCPTable[$iUDPentries + 1][2]

	$aTCPTable[0][0] = "Local IP                  "
	$aTCPTable[0][1] = "Local Port"

	#cs
		$tMIB_UDPROW = DllStructCreate("dword LocalAddr;" & _
		"dword LocalPort")
	#ce

	Local $iOffset
	Local $iIP

	UDPStartup()

	For $i = 1 To $iUDPentries
		$iOffset = ($i - 1) * 2 + 1 ; going thru array of dwords

		$iIP = DllStructGetData($tMIB_UDPTABLE_DWORDS, 1, $iOffset + 1)

		If $iIP = 16777343 Then
			$aTCPTable[$i][0] = "localhost (127.0.0.1)"
		ElseIf $iIP = 0 Then
			$aTCPTable[$i][0] = "Any local address"
		Else
			$aTCPTable[$i][0] = BitOR(BinaryMid($iIP, 1, 1), 0) & "." & BitOR(BinaryMid($iIP, 2, 1), 0) & "." & BitOR(BinaryMid($iIP, 3, 1), 0) & "." & BitOR(BinaryMid($iIP, 4, 1), 0)
			$aTCPTable[$i][0] = _IpToName($iIP) & " (" & $aTCPTable[$i][0] & ")"
		EndIf

		$aTCPTable[$i][1] = Dec(Hex(BinaryMid(DllStructGetData($tMIB_UDPTABLE_DWORDS, 1, $iOffset + 2), 1, 2)))

	Next

	UDPShutdown()

	Return $aTCPTable

EndFunc   ;==>_GetUdpTable
Вот так можно разорвать соединение:
Код:
Func _DisableConnection($lIP,$lP,$rIP,$rP)

	Local $tMIB_TCPROW = DllStructCreate("dword State;" & _
			"dword LocalAddr;" & _
			"dword LocalPort;" & _
			"dword RemoteAddr;" & _
			"dword RemotePort")

	DllStructSetData($tMIB_TCPROW, "State", 12) ; MIB_TCP_STATE_DELETE_TCB

Local $aIPLocal = StringSplit($lIP, ".")
$iIPLocal = Dec(Hex($aIPLocal[4], 2) & Hex($aIPLocal[3], 2) & Hex($aIPLocal[2], 2) & Hex($aIPLocal[1], 2))

DllStructSetData($tMIB_TCPROW, "LocalAddr", $iIPLocal)

$iPortLocal = Dec(Hex(BinaryMid(Number($lP), 1, 2)))

	DllStructSetData($tMIB_TCPROW, "LocalPort", $iPortLocal)

			Local $aIPRemote = StringSplit($rIP, ".")
			$iIPRemote = Dec(Hex($aIPRemote[4], 2) & Hex($aIPRemote[3], 2) & Hex($aIPRemote[2], 2) & Hex($aIPRemote[1], 2))


	DllStructSetData($tMIB_TCPROW, "RemoteAddr", $iIPRemote)

	Local $aPortRemote = StringRegExp($rP, "\A\d{1,5}", 3)

		$iPortRemote = Dec(Hex(BinaryMid(Number($aPortRemote[0]), 1, 2)))


	DllStructSetData($tMIB_TCPROW, "RemotePort", $iPortRemote)

	Local $aCall = DllCall($hIPHLPAPI, "int", "SetTcpEntry", "ptr", DllStructGetPtr($tMIB_TCPROW))

	If @error Or $aCall[0] Then
		Return SetError(2, 0, 0)
	EndIf

	Return 1

EndFunc   ;==>_DisableConnection
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Внимание!!!
После спользования функции якобы обрывающей интернет, он отрубил мою icq навечно, дайте функцию которая востоновит все... И надо предупреждать о последствиях... Жду функции для востоновления, перезагрузка не помогает
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Ganibal95
1. слепых нет, не надо баловаться со шрифтами
2. о каких последствиях? у тебя в теме указано, что надо закрыть порт для процесса. ты закрыл порт для icq. в чем проблема?
3. жди ответа от r35p3ct, уверен что он в состоянии переделать скрипт для открытия порта. никакой паники.
4. если не в состоянии оценить принцип работы скрипта, то не стоит использовать его как попало и когда попало, а потом биться в истериках ;)
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
А я нажал на кнопку в скрпите и ХРЯСЬ она не может пользоватся интернетом, НО после того как процесс перезагрузить то процесс должен Пользоватся интернетом..
Видиш НО?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
а что за $hIPHLPAPI? что-то я в коде не вижу, где бы она определялась.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Код:
Global Const $hIPHLPAPI = DllOpen("iphlpapi.dll")



Добавлено:
Сообщение автоматически объединено:

:laugh:
Откат системы спас :laugh: :laugh: УРАА
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Ganibal95
насколько старый был бэкап? но все же, видится мне что надо было просто открыть порт. а то ты вылечил головную боль гильотиной.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Dm666
Это гибрид 2х функций, сегодня собирал...
Код:
Func _GetExtendedTcpTable()

    Local $aCall = DllCall($hIPHLPAPI, "dword", "GetExtendedTcpTable", _
			"ptr*", 0, _
			"dword*", 0, _
			"int", 1, _ ; 1, sort in ascending order
			"dword", 2, _ ; AF_INET4
			"dword", 5, _ ; TCP_TABLE_OWNER_PID_ALL
			"dword", 0)

    If @error Then
        Return SetError(1, 0, 0)
    EndIf

    If $aCall[0] <> 122 Then ; ERROR_INSUFFICIENT_BUFFER
        Return SetError(2, 0, 0)
    EndIf

    Local $iSize = $aCall[2]

    Local $tByteStructure = DllStructCreate("byte[" & $iSize & "]")

    $aCall = DllCall($hIPHLPAPI, "dword", "GetExtendedTcpTable", _
			"ptr", DllStructGetPtr($tByteStructure), _
			"dword*", $iSize, _
			"int", 1, _ ; 1, sort in ascending order
			"dword", 2, _ ; AF_INET4
			"dword", 5, _ ; TCP_TABLE_OWNER_PID_ALL
			"dword", 0)

    If @error Or $aCall[0] Then
        Return SetError(3, 0, 0)
    EndIf

	Local $tMIB_TCPTABLE_OWNER_PID_DWORDS = DllStructCreate("dword[" & Ceiling($iSize / 4) & "]", DllStructGetPtr($tByteStructure))

	Local $iTCPentries = DllStructGetData($tMIB_TCPTABLE_OWNER_PID_DWORDS, 1)

    Local $tMIB_TCPTABLE_DWORDS = DllStructCreate("dword[" & Ceiling($iSize / 4) & "]", DllStructGetPtr($tByteStructure))



    Local $aTCPTable[$iTCPentries + 1][7]

    $aTCPTable[0][0] = "Connection state"
    $aTCPTable[0][1] = "Local IP"
    $aTCPTable[0][2] = "Local Port"
    $aTCPTable[0][3] = "Remote IP"
    $aTCPTable[0][4] = "Remote port"
	$aTCPTable[0][5] = "PID"
	$aTCPTable[0][6] = "Process Name"

    #cs
        $tMIB_TCPROW = DllStructCreate("dword State;" & _
        "dword LocalAddr;" & _
        "dword LocalPort;" & _
        "dword RemoteAddr;" & _
        "dword RemotePort")
    #ce

	Local $aProcesses = ProcessList()

    Local $aState[12] = ["CLOSED", "LISTENING", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "CLOSE_WAIT", "CLOSING", "LAST_ACK", "TIME_WAIT", "DELETE_TCB"]

    Local $iOffset
    Local $iIP

    TCPStartup()

    For $i = 1 To $iTCPentries
        $iOffset = ($i - 1) * 6 + 1 ; going thru array of dwords

        $aTCPTable[$i][0] = $aState[DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 1) - 1] ; connection state text

        $iIP = DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 2)

        If $iIP = 16777343 Then
            $aTCPTable[$i][1] = "127.0.0.1"
        ElseIf $iIP = 0 Then
            $aTCPTable[$i][1] = @IPAddress1
        Else
            $aTCPTable[$i][1] = BitOR(BinaryMid($iIP, 1, 1), 0) & "." & BitOR(BinaryMid($iIP, 2, 1), 0) & "." & BitOR(BinaryMid($iIP, 3, 1), 0) & "." & BitOR(BinaryMid($iIP, 4, 1), 0)
            $aTCPTable[$i][1] = $aTCPTable[$i][1]
        EndIf

        $aTCPTable[$i][2] = Dec(Hex(BinaryMid(DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 3), 1, 2)))

        If DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 1) < 3 Then
            $aTCPTable[$i][4] = "-"
            $aTCPTable[$i][3] = "-"
        Else
            $iIP = DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 4)
            $aTCPTable[$i][3] = BitOR(BinaryMid($iIP, 1, 1), 0) & "." & BitOR(BinaryMid($iIP, 2, 1), 0) & "." & BitOR(BinaryMid($iIP, 3, 1), 0) & "." & BitOR(BinaryMid($iIP, 4, 1), 0)
            $aTCPTable[$i][4] = Dec(Hex(BinaryMid(DllStructGetData($tMIB_TCPTABLE_DWORDS, 1, $iOffset + 5), 1, 2)))
        EndIf
		$aTCPTable[$I][5] = DllStructGetData($tMIB_TCPTABLE_OWNER_PID_DWORDS, 1, $iOffset + 6)
		If Not $aTCPTable[$I][5] Then
			$aTCPTable[$I][6] = "System Idle Process"
		Else
			For $J = 1 To $aProcesses[0][0]
				If $aProcesses[$J][1] = $aTCPTable[$I][5] Then
					$aTCPTable[$I][6] = $aProcesses[$J][0]
					If Not $aTCPTable[$I][6] Then $aTCPTable[$I][6] = $aProcesses[$J][0]
					ExitLoop
				EndIf
			Next
		EndIf
    Next

    TCPShutdown()

    Return $aTCPTable

EndFunc   ;==>_GetTcpTable


Kaster
Откат произвел до 2 октября...
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Ganibal95 [?]
он отрубил мою icq навечно, дайте функцию которая востоновит все
Вообще эта функция просто рарывает соеденение(у меня так), по идее переподключение в асе должно помочь.
порт она не убивает.
Либо покажи свой код, может как то не так его реализовал, я вообще думал, чтобы на время закрыть доступ, то нужно функцию в цикле использовать....

UPD: Лучше не делать солянки из разных функций, сложно разобраться, тем более код этой функции я готовый взял с офф. форума.
я так разрывал соединение:
Код:
DisableConnection(@IPAddress1,локальный порт,Удрес удаленного сервера,Порт удаленного сервера)

дальше просто перезапускаю прогу и доступ у нее есть, перезапускать нужно потому что она не поддерживает самостоятельное переподключение в отличии от ICQ
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
876
Репутация
239
Я использовал для обрыва твою функцию, после того как я убил порты: 8080, 5190 и другие, в надежде что перезагрузка поможет... Я перезагрузился, захожу в ася не работает, захожу на сайты не работают так-как большинство сайтов роботают через порт 8080, потом я был в панике... Мучал реестр... И вспомнил про заветный откат системы... Тут я сохраняю нужные данные на флешку, и сделал откат, после отката проблема ушла... И я сразу удалил эту функцию к чертям... Я находил в интернете что этот вызов из длл должен убить порт...
 
Верх