<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WMI: сканер портов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6249&amp;type=atom" />
	<updated>2011-09-25T18:49:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6249</id>
		<entry>
			<title type="html"><![CDATA[Re: WMI: сканер портов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51847#p51847" />
			<content type="html"><![CDATA[<p>Почему .NET?</p><p>WMI в разы кручей дотнетов, да и разные это вещи из разных подсистем, IMO. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Думаю что в Висте и 7 полюбому есть аналоговые и более совершенные классы.<br />А про серверные ОС даже говорить не стоит. (~5000 классов в 2k3&nbsp; против ~3500 в winXP).</p><p>p.s. А что, на XP уже никто не сидит?</p>]]></content>
			<author>
				<name><![CDATA[Аскет]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25748</uri>
			</author>
			<updated>2011-09-25T18:49:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51847#p51847</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WMI: сканер портов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51840#p51840" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Аскет пишет:</cite><blockquote><p>p.s. как окзалось, используемый класс отсутствует в Win7.<br />скрипт тестировался под WinXP sp2. Должен работать под 2k3.</p></blockquote></div><p>Ну все, теперь точно уходим в .NET <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />p.s. сорри за оффтоп, реплика имеет отношение к моей текущей ситуации</p>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2011-09-25T17:32:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51840#p51840</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WMI: сканер портов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51812#p51812" />
			<content type="html"><![CDATA[<p>Приветствую коллеги.</p><p>WMI таит много секретов и недокументированных классов, да и вообще...загадочный.</p><p>Одни из таких очень полезных классов <strong>NetDiagnostics</strong>.<br /> Ни msdn ни WMIsdk о нём знать не знают (почти). Но мы и без документаций, сами себе само-документированные <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p><div class="quotebox"><blockquote><p>Описание [<strong>ROOT\cimv2:NetDiagnostics</strong>]:	&lt;none&gt;<br />----------------------------<br />Methods [NetDiagnostics]:<br />	<strong>Ping</strong> (host)<br />	<strong>ConnectToPort</strong> (host, port)<br />----------------------------<br />Properties [NetDiagnostics]:<br />	bIEProxy<br />	id<br />	IEProxy<br />	IEProxyPort<br />	NewsNNTPPort<br />	NewsServer</p></blockquote></div><p>Оба метода (Ping и ConnectToPort) возвращают булево значение, и работа с ними достаточна проста.<br />В рамках данной темы нам интересен только <strong>ConnectToPort</strong>.</p><p>Набросал, как всегда компактно, вот такой сканер портов:</p><div class="codebox"><pre><code>&#039;*****************************************************************************************
&#039;* Name:				PortScaner
&#039;* Language:			VBScript
&#039;* CommandLine:			PortScaner.vbs [[host[=localhost]] portStart[=7] portEnd]
&#039;* Description:			Сканер открытых TCP-портов и диапазонов портов.
&#039;************************************************************************************
&#039;* CopyLeft: 		Аскет, 19 spt 2011
&#039;*************************************************************************************

SELECT CASE wsh.arguments.count
	CASE 0: WSH.ECHO &quot;USAGE:&quot; &amp; VBCR &amp; &quot;PortScaner.vbs [host] port&quot;
			WSH.ECHO &quot;USAGE:&quot; &amp; VBCR &amp; &quot;PortScaner.vbs [host] portStart portEnd&quot;
			WSH.Quit
	CASE 1: 
		host=&quot;localhost&quot;
		port=WSH.ARGUMENTS(0)
	CASE 2: 
		host=WSH.ARGUMENTS(0)
		port=WSH.ARGUMENTS(1)
	CASE 3: 
        PoprtRange = (WSH.ARGUMENTS(2) - WSH.ARGUMENTS(1))
		REDIM port(PoprtRange)
		host  = WSH.ARGUMENTS(0)
		j=0
		FOR i = WSH.ARGUMENTS(1) TO WSH.ARGUMENTS(2)
			port(j)=i
			j=j+1
		NEXT
		
END SELECT	

set wmi = GetObject (&quot;winmgmts:NetDiagnostics&quot;).instances_
if NOT IsArray(port) THEN 
	FOR EACH net IN wmi
			res = net.ConnectToPort ( host ,port)
			if (res) THEN wscript.echo  (host &amp;&quot;: &quot;&amp; port)
		next
 else
	FOR EACH net IN wmi
		for each p in port
			res = net.ConnectToPort (host ,p)
			IF (res) THEN wscript.echo  (host &amp;&quot;: &quot;&amp; p)
		next
	NEXT
end if</code></pre></div><p>Вся беда в том что никак я не могу привязать асинхронность, или лучше - многопоточность.</p><p><strong>ExecMethodAsync</strong> с этим классом работать отказывается. (этот метод WMI COMAPI стоит обсудить отдельно, думаю)<br />Многопоточность через <strong>SetTimeout</strong>, предложенная коллегой <strong>Xameleon</strong>&#039;ом, тоже не вяжется - через <strong>GETREF</strong> нельзя передать параметры функции.<br />Хотелось бы конечно реализовать на чистом WMI.</p><p>Ваши предложения, коллеги. Как воплотить асинхронность/многопоточность?</p><p>p.s. как окзалось, используемый класс отсутствует в Win7.<br />скрипт тестировался под WinXP sp2. Должен работать под 2k3.</p>]]></content>
			<author>
				<name><![CDATA[Аскет]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25748</uri>
			</author>
			<updated>2011-09-24T14:46:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51812#p51812</id>
		</entry>
</feed>
