1

Тема: VBScript: Мониторинг открытых потров TCP/UDP

Подскажите пожалуйста как средствами WMI мониторить открытые сетевые порты. Какой класс WMI использовать?

2

Re: VBScript: Мониторинг открытых потров TCP/UDP

Можно без WMI - запускать скажем консольный TCPVIEW, скидывать инфо в файл и разбирать что он там насобирал.

ИМХО

3

Re: VBScript: Мониторинг открытых потров TCP/UDP

Порты можно еще проверять циклическим запуском внешней команды "netsh diag connect iphost" с указанием адреса и порта с последующим разбором ответа. Реализовать имхо просто, но на закрытых портах будут ощутимые задержки.

WBR. Roman

4

Re: VBScript: Мониторинг открытых потров TCP/UDP

Rom5 пишет:

Порты можно еще проверять циклическим запуском внешней команды "netsh diag connect iphost" с указанием адреса и порта с последующим разбором ответа. Реализовать имхо просто, но на закрытых портах будут ощутимые задержки.

Спасибо, это разумный вариант, зависшие можно прибивать по таймауту, попробую.

5

Re: VBScript: Мониторинг открытых потров TCP/UDP

Можно использовать Winsock, но есть проблема лицензирования на клиентах без VB & Stuidio (...). Несовсем понятен этап с лицензированием Microsoft Winsock Control. Может кто нибудь пояснить?

Option Explicit
If WScript.Arguments.Count<>1 Then
    Wscript.Echo "обязательный параметр : Удаленный Хост / IP"
    WScript.Quit
End If

Dim K,P
If right(Ucase(WScript.FullName),11)="WSCRIPT.EXE" Then
    Set K=CreateObject("WScript.Shell")
    K.Run K.ExpandEnvironmentStrings("%COMSPEC%") & " /C cscript.exe """ & WScript.ScriptFullName & """ " & WScript.Arguments(0),1,False
    Set K=Nothing
    WScript.Quit
End If

Set K=I()

L "Сканирование портов запущено на " & K.LocalHostName & " (" & K.LocalIP & ")"

K.RemoteHost=WScript.Arguments(0)
For P=25 To 111
    K.RemotePort=P
    K.Connect
    While K.State<>0
        wscript.sleep 90
    Wend
Next
L "Финиш!"

Function I()
    On Error Resume Next
    Err.Number=0
    Set I=WScript.CreateObject("MSWinsock.Winsock","s_")
    Select Case Err.Number
    Case 0
    case &H80040112
        L "нет лицензии, нужно добавить в реестр значение для регистрации винсок: " &_
        "http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/8dd70eb9-b377-4ef6-b75d-a0fc0e9a9b5e"
    case &H80020009
        L "ActiveX Winsock не зарегестрирован - юзай regsvr32"
    Case else
        L "Error " & Err.Number & " - &H" & Hex(Err.Number) & " - " & Err.Description
    End Select
End Function

Sub L(S):WScript.Echo S:End Sub

Sub s_Connect
    K.Close
    L "порт " & P & " Открыт !"
End Sub
Sub s_Error(ByVal N,D,c,S,F,H,A)
    K.Close
    If N=10061 Then
        WScript.StdOut.Write "."
    Else
        L P & ":" & N & " " & D
    End If
End Sub

6

Re: VBScript: Мониторинг открытых потров TCP/UDP

netstat -a
netstat -an

Эти команды разве не помогут?

( 2 * b ) || ! ( 2 * b )

7

Re: VBScript: Мониторинг открытых потров TCP/UDP

abasov пишет:

Несовсем понятен этап с лицензированием Microsoft Winsock Control. Может кто нибудь пояснить?

Попробуйте посмотреть здесь.

8 (изменено: Евген, 2010-11-30 14:17:00)

Re: VBScript: Мониторинг открытых потров TCP/UDP

Коллеги, приветствую !
Отличное исполнение сканера портов, если у кого-нибкдь есть возможность и время, то предлагаю доработать следующее...
1) Реализовать данное в виде HTA
2) вынести в настройки начало и конец диапазона сканируемых портов
3) визуально отражать номера открытых портов
4) Если есть возможность - не выжыдать окончание таймаута закрытых портов, закрывать раньше... (может кто-нить вообще сумеет данное реализовать асинхронно ?!?!)

Времени не хватает... :-(

9

Re: VBScript: Мониторинг открытых потров TCP/UDP

Ещё затейка !!! Тоже HTA'шная !!!
Сделать типа такого разговорника, как бы это правильно сказать....   ну то есть как общение по протоколу POP3, чтобы можно было вводить команды, и видеть что узел тебе отвечает, т.е. такой интерактивный сниффер, у которого бы в настройках было:
1) выбор узла с которым общаться
2) выбор порта
3) окно для ввода команд  (в виде TEXTAREA)
4) окно для вывода ответа (в виде TEXTAREA)

Времени не хватает... :-(