<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WMI: сканер портов]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6249</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6249&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WMI: сканер портов».]]></description>
		<lastBuildDate>Sun, 25 Sep 2011 18:49:51 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WMI: сканер портов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51847#p51847</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Sun, 25 Sep 2011 18:49:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51847#p51847</guid>
		</item>
		<item>
			<title><![CDATA[Re: WMI: сканер портов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51840#p51840</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (dab00)]]></author>
			<pubDate>Sun, 25 Sep 2011 17:32:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51840#p51840</guid>
		</item>
		<item>
			<title><![CDATA[WMI: сканер портов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51812#p51812</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Sat, 24 Sep 2011 14:46:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51812#p51812</guid>
		</item>
	</channel>
</rss>
