<?xml version="1.0"?>
<rss version="2.0"><channel><title>Windows Latest Topics</title><link>https://it4it.club/forum/6-windows/</link><description>Windows Latest Topics</description><language>en</language><item><title>&#x41A;&#x430;&#x43A; &#x437;&#x430;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x432;&#x435;&#x441;&#x44C; HTTP &#x438; HTTPS &#x442;&#x440;&#x430;&#x444;&#x438;&#x43A; Windows &#x432; proxy server</title><link>https://it4it.club/topic/49-kak-zavernut-ves-http-i-https-trafik-windows-v-proxy-server/</link><description><![CDATA[
<p>
	Всем привет!
</p>

<p>
	И так, имеется компьютер, которому предоставлен доступ в интернет через proxy сервер. Для обычной работы в браузере этого вполне достаточно, но возникла ситуация когда потребовалось выпустить в интернет (по протоколу HTTP/HTTPS) приложение не имеющее сетевых настроек прокси. Первой попыткой было завернуть трафик через Proxifier, но из-за специфики работы программы через Java VM она потерпела фиаско. Конечно, можно и нужно было попробовать разобраться с JVM, но хотелось здесь и сейчас!
</p>

<p>
	Принято решение завернуть http/s трафик windows в proxy сервер.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://it4it.club/uploads/monthly_2016_10/netsh1.jpg.d79e2d9fa56a398c8601421e316f0511.jpg" data-fileid="376" rel="external"><img class="ipsImage ipsImage_thumbnailed" data-fileid="376" data-unique="3yhhfz2x2" src="https://it4it.club/uploads/monthly_2016_10/netsh1.thumb.jpg.d8ba24af601551c4c03afd9d6a21d7a0.jpg" alt="netsh1.jpg"></a>
</p>

<p>
	В состав Windows (начиная с 2000) включена утилита netsh предназначенная для конфигурации сетевых параметров. Утилита имеет функционал от настройки ip адресов до конфигурации IPSec, но нас интересует настройка службы WinHTTP.
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			WinHTTP реализует стек клиента HTTP и обеспечивает разработчикам Win32 API и компонент автоматизации COM для отправки запросов HTTP и получения ответов. Кроме того, WinHTTP обеспечивает поддержку автоматического обнаружения конфигурации прокси через реализацию протокола WPAD (Web Proxy Auto-Discovery).
		</p>
	</div>
</div>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="377" data-unique="73sv2d6dm" src="https://it4it.club/uploads/monthly_2016_10/netsh2.jpg.d7ee8e99130aaa349c396c336f8118be.jpg" alt="netsh2.jpg"></p>

<p>
	 
</p>

<p>
	Для конфигурации WinHTTP через командную строку (cmd), последнюю необходимо запускать с правами администратора.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="378" data-unique="szajg61j7" src="https://it4it.club/uploads/monthly_2016_10/netsh3.jpg.fc6ce22c1e5ad02b6aa543ac6d8097d1.jpg" alt="netsh3.jpg"></p>

<p>
	Добавление общей записи о прокси-сервере
</p>

<pre class="ipsCode" id="ips_uid_4067_5">
netsh winhttp set proxy proxy-server="10.10.10.1:3128"</pre>

<p>
	Добавление записи о прокси-сервере с указанием конкретных протоколов
</p>

<pre class="ipsCode" id="ips_uid_4067_7">
netsh winhttp set proxy proxy-server="http=10.10.10.1:3128;https=10.10.10.1:3129"</pre>

<p>
	Добавление записи о прокси-сервере с указанием конкретных протоколов и списка исключений
</p>

<pre class="ipsCode" id="ips_uid_4067_11">
netsh winhttp set proxy proxy-server="http=10.10.10.1:3128;https=10.10.10.1:3129" bypass-list="*.example.com"</pre>

<p>
	Импорт настроек из IE
</p>

<pre class="ipsCode" id="ips_uid_4067_16">
netsh winhttp import proxy source=ie</pre>

<p>
	Просмотр текущей конфигурации
</p>

<pre class="ipsCode" id="ips_uid_4067_19">
netsh winhttp show</pre>

<p>
	Сброс настроек
</p>

<pre class="ipsCode" id="ips_uid_4067_21">
netsh winhttp reset proxy</pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">49</guid><pubDate>Fri, 21 Oct 2016 08:55:52 +0000</pubDate></item><item><title>ProduKey + PHP &#x43A;&#x430;&#x43A; &#x43E;&#x434;&#x438;&#x43D; &#x438;&#x437; &#x441;&#x43F;&#x43E;&#x441;&#x43E;&#x431;&#x43E;&#x432; &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x430; &#x43E;&#x431;&#x441;&#x442;&#x430;&#x43D;&#x43E;&#x432;&#x43A;&#x438; &#x441; &#x43B;&#x438;&#x446;&#x435;&#x43D;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435;&#x43C; &#x441;&#x43E;&#x444;&#x442;&#x430; &#x43E;&#x43A;&#x43E;&#x43D;&#x43D;&#x43E;&#x439; &#x43A;&#x43E;&#x43C;&#x43F;&#x430;&#x43D;&#x438;&#x438;</title><link>https://it4it.club/topic/66-produkey-php-kak-odin-iz-sposobov-analiza-obstanovki-s-licenzirovaniem-softa-okonnoy-kompanii/</link><description><![CDATA[
<p>
	Всем доброе время суток.
</p>

<p>
	Сегодня пойдет речь об одном из вариантов сбора информации о лицензиях операционных системах Windows и некоторого сопутствующего программного обеспечения.  Для сбора будет использована утилита <strong><a href="http://www.nirsoft.net/utils/product_cd_key_viewer.html" rel="external nofollow">ProduKey</a></strong>, это далеко не идеальный вариант, но вполне приемлемый, если нет иных средств мониторинга, и требуется что-то быстро слепить на коленке без траты денег.
</p>

<p>
	И так, имеется группа компьютеров находящихся в домене, подсеть <strong>10.10.10.0/24</strong>, <strong><a href="http://www.nirsoft.net/utils/product_cd_key_viewer.html" rel="external nofollow">ProduKey</a></strong> запускается от учетной записи администратора домена или администратора той ветки, к которой принадлежит подсеть.
</p>

<p>
	Программой можно пользоваться как в графическом интерфейсе, так и в консольном режиме. Последний вариант, лично для меня, более предпочтителен.
</p>

<p>
	<img alt="get-windows-office-keys2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="488" data-unique="qteb77luw" src="https://it4it.club/uploads/monthly_2017_04/get-windows-office-keys2.png.5900475c10c8d4e798ddce4be0cee7ad.png"></p>

<p>
	<strong><span style="color:#e74c3c;">ВАЖНО: нам требуется программа только на Английском языке т.к имена ключей использующихся в отчетах должны соответствовать именам ключей в PHP скрипте далее.</span></strong>
</p>

<p>
	В корне с программой создаем <strong>.bat</strong> файл со следующим содержимым
</p>

<pre class="ipsCode" id="ips_uid_162_6">
produkey.exe /iprange 10.10.10.2 10.10.10.254 /sjson 10.10.10.0.json /WindowsKeys 1 /OfficeKeys 1 /SQLKeys 1 /IEKeys 0 /ExchangeKeys 1 /ExtractEdition 0</pre>

<p>
	Используемые параметры
</p>

<ul>
<li>
		/iprange - указывает диапазон адресов для сканирования
	</li>
	<li>
		/sjson - файл отчета необходимо сохранить в формате json
	</li>
	<li>
		/WindowsKeys 1 - собирать ключи операционных систем
	</li>
	<li>
		/OfficeKeys 1 - собирать ключи Office
	</li>
	<li>
		/SQLKeys 1 - собирать ключи SQL сервера
	</li>
	<li>
		/IEKeys 0 - НЕ собирать ключи IE
	</li>
	<li>
		/ExchangeKeys 1 - собирать ключи Exchange
	</li>
	<li>
		/ExtractEdition 0 - НЕ собирать расширенную информацию об операционной системе
	</li>
</ul>
<p>
	Это один из вариантов запуска, большее количество параметров описано на сайте разработчика.
</p>

<p>
	После того, как утилита закончит свою работу, она сохранит отчет в формате <strong>json</strong> в указанный нами файл. Можно использовать и другие форматы отчетов, но явного представления о количестве и качестве мы не получим. Программа только собирает данные, все остальные манипуляции с ними ложатся на плечи рядовых администраторов.
</p>

<p>
	Но не беда, на помощь нам приходит, уже затертый до дыр, <strong>Apache + PHP</strong>.
</p>

<p>
	Все файлы отчета помещаем на машину, где установлены эти ребята, и обязательно за пределами Web сервера. Сам <strong>PHP</strong> скрипт будет выглядеть следующим образом.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_118_5">
<span class="pun">&lt;?</span><span class="pln">PHP
</span><span class="kwd">if</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    ini_set</span><span class="pun">(</span><span class="str">'error_reporting'</span><span class="pun">,</span><span class="pln"> E_ALL</span><span class="pun">);</span><span class="pln">
    ini_set</span><span class="pun">(</span><span class="str">'display_errors'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    ini_set</span><span class="pun">(</span><span class="str">'display_startup_errors'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
$myKeys </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">
    </span><span class="str">'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Управляющая компания'</span><span class="pun">,</span><span class="pln">
    </span><span class="str">'YYYYY-YYYYY-YYYYY-YYYYY-YYYYY'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Завод №1'</span><span class="pun">,</span><span class="pln">
    </span><span class="str">'ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Складская зона'</span><span class="pun">,</span><span class="pln">
</span><span class="pun">);</span><span class="pln">
$info </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">
</span><span class="com">/*
 Тут указываем путь и шаблон поиска файлов отчетов (Here we specify the path and template for finding report files)
 glob("../../../info/log_*.json")
 glob("/var/log/*.json";
 glob("*.json");
*/</span><span class="pln">
</span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">glob</span><span class="pun">(</span><span class="str">"*.json"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">as</span><span class="pln"> $file</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $json </span><span class="pun">=</span><span class="pln"> str_replace</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">"\r\n"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">),</span><span class="pln"> </span><span class="str">''</span><span class="pun">,</span><span class="pln"> file_get_contents</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">));</span><span class="pln">
    $json </span><span class="pun">=</span><span class="pln"> json_decode</span><span class="pun">(</span><span class="pln">iconv</span><span class="pun">(</span><span class="str">'cp1251'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'utf-8'</span><span class="pun">,</span><span class="pln"> $json</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">is_array</span><span class="pun">(</span><span class="pln">$json</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$json </span><span class="kwd">as</span><span class="pln"> $id </span><span class="pun">=&gt;</span><span class="pln"> $obj</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">preg_match_all</span><span class="pun">(</span><span class="str">'/(.+) \((.+)\)/m'</span><span class="pun">,</span><span class="pln"> $obj</span><span class="pun">[</span><span class="str">'Computer Name'</span><span class="pun">],</span><span class="pln"> $host</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                $ip </span><span class="pun">=&amp;</span><span class="pln"> $host</span><span class="pun">[</span><span class="lit">2</span><span class="pun">][</span><span class="lit">0</span><span class="pun">];</span><span class="pln">
                $name </span><span class="pun">=&amp;</span><span class="pln"> $host</span><span class="pun">[</span><span class="lit">1</span><span class="pun">][</span><span class="lit">0</span><span class="pun">];</span><span class="pln">

                $net </span><span class="pun">=</span><span class="pln"> explode</span><span class="pun">(</span><span class="str">'.'</span><span class="pun">,</span><span class="pln"> $ip</span><span class="pun">);</span><span class="pln">
                array_splice</span><span class="pun">(</span><span class="pln">$net</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
                array_push</span><span class="pun">(</span><span class="pln">$net</span><span class="pun">,</span><span class="pln"> </span><span class="str">'0'</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$ip  </span><span class="pun">==</span><span class="pln"> $name</span><span class="pun">)</span><span class="pln"> $name </span><span class="pun">=</span><span class="pln"> </span><span class="str">'&lt;u&gt;'</span><span class="pun">.</span><span class="pln">$name</span><span class="pun">.</span><span class="str">'&lt;/u&gt;'</span><span class="pun">;</span><span class="pln">
                $net </span><span class="pun">=</span><span class="pln"> implode</span><span class="pun">(</span><span class="str">'.'</span><span class="pun">,</span><span class="pln"> $net</span><span class="pun">);</span><span class="pln">
                $info</span><span class="pun">[</span><span class="pln">$obj</span><span class="pun">[</span><span class="str">'Product Name'</span><span class="pun">]][</span><span class="pln">$obj</span><span class="pun">[</span><span class="str">'Product Key'</span><span class="pun">]][</span><span class="pln">$net</span><span class="pun">][]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $ip</span><span class="pun">.</span><span class="str">' ('</span><span class="pun">.</span><span class="pln">$name</span><span class="pun">.</span><span class="str">')'</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
echo </span><span class="str">'&lt;html lang="ru-RU" dir="ltr"&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;head&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;style type="text/css"&gt;body {cursor: default;} i b:hover {color: forestgreen; text-decoration: underline;} #host:hover {color: forestgreen;}&lt;/style&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"&gt;&lt;/script&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;/head&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;body&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;pre&gt;'</span><span class="pun">;</span><span class="pln">
$uSoft </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
$uKey  </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
$uNet  </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$info </span><span class="kwd">as</span><span class="pln"> $software </span><span class="pun">=&gt;</span><span class="pln"> $keys</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $uSoft</span><span class="pun">++;</span><span class="pln">
    echo </span><span class="str">"&lt;b style='font-size: large; cursor: pointer;' onclick=\"if($('div#s"</span><span class="pun">.</span><span class="pln">$uSoft</span><span class="pun">.</span><span class="str">"').is(':visible')) $('div#s"</span><span class="pun">.</span><span class="pln">$uSoft</span><span class="pun">.</span><span class="str">"').hide(400); else $('div#s"</span><span class="pun">.</span><span class="pln">$uSoft</span><span class="pun">.</span><span class="str">"').show(400);\"&gt;"</span><span class="pun">.</span><span class="pln">$software</span><span class="pun">.</span><span class="str">"&lt;/b&gt; &lt;i style='font-size: normal;'&gt;(licenses: "</span><span class="pun">.</span><span class="pln">count</span><span class="pun">(</span><span class="pln">$keys</span><span class="pun">).</span><span class="str">")&lt;/i&gt;\n"</span><span class="pun">;</span><span class="pln">
    echo </span><span class="str">"&lt;div id='s"</span><span class="pun">.</span><span class="pln">$uSoft</span><span class="pun">.</span><span class="str">"' hidden&gt;"</span><span class="pun">;</span><span class="pln">
    asort</span><span class="pun">(</span><span class="pln">$keys</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$keys </span><span class="kwd">as</span><span class="pln"> $key </span><span class="pun">=&gt;</span><span class="pln"> $subnet</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $uKey</span><span class="pun">++;</span><span class="pln">
        </span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">$key</span><span class="pun">)</span><span class="pln"> $key </span><span class="pun">=</span><span class="pln"> </span><span class="str">'UNKOWN'</span><span class="pun">;</span><span class="pln">
        echo </span><span class="str">"\t&lt;i&gt;&lt;b style='cursor: pointer; color: forestgreen;' onclick=\"if($('div#k"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="str">"').is(':visible')) $('div#k"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="str">"').hide(400); else $('div#k"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="str">"').show(400);\"&gt;"</span><span class="pun">.</span><span class="pln">$key</span><span class="pun">.</span><span class="str">"&lt;/b&gt; (hosts: "</span><span class="pun">.(</span><span class="pln">count</span><span class="pun">(</span><span class="pln">$subnet</span><span class="pun">,</span><span class="pln"> COUNT_RECURSIVE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> count</span><span class="pun">(</span><span class="pln">$subnet</span><span class="pun">)).</span><span class="str">")&lt;/i&gt; &lt;b style='color: red;'&gt;"</span><span class="pun">.(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$myKeys</span><span class="pun">[</span><span class="pln">$key</span><span class="pun">])?</span><span class="pln"> $myKeys</span><span class="pun">[</span><span class="pln">$key</span><span class="pun">]</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">).</span><span class="str">"&lt;/b&gt;\n"</span><span class="pun">;</span><span class="pln">
        echo </span><span class="str">"&lt;div id='k"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="str">"' hidden&gt;"</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$subnet </span><span class="kwd">as</span><span class="pln"> $net </span><span class="pun">=&gt;</span><span class="pln"> $host</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            $uNet</span><span class="pun">++;</span><span class="pln">
            echo </span><span class="str">"\t\t&lt;i&gt;&lt;b style='cursor: pointer;' onclick=\"if($('div#n"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="pln">$uNet</span><span class="pun">.</span><span class="str">"').is(':visible')) $('div#n"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="pln">$uNet</span><span class="pun">.</span><span class="str">"').hide(400); else $('div#n"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="pln">$uNet</span><span class="pun">.</span><span class="str">"').show(400);\"&gt;"</span><span class="pun">.</span><span class="pln">$net</span><span class="pun">.</span><span class="str">"&lt;/b&gt; (hosts: "</span><span class="pun">.</span><span class="pln">count</span><span class="pun">(</span><span class="pln">$host</span><span class="pun">).</span><span class="str">")&lt;/i&gt;\n"</span><span class="pun">;</span><span class="pln">
            echo </span><span class="str">"&lt;div id='n"</span><span class="pun">.</span><span class="pln">$uKey</span><span class="pun">.</span><span class="pln">$uNet</span><span class="pun">.</span><span class="str">"' hidden style='padding-bottom: 10px;'&gt;"</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$host </span><span class="kwd">as</span><span class="pln"> $name</span><span class="pun">)</span><span class="pln"> echo </span><span class="str">"\t\t\t&lt;span id='host'&gt;&lt;i&gt;"</span><span class="pun">.</span><span class="pln">$name</span><span class="pun">.</span><span class="str">"&lt;/i&gt;&lt;/span&gt;\n"</span><span class="pun">;</span><span class="pln">
            echo </span><span class="str">"&lt;/div&gt;"</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        echo </span><span class="str">"&lt;/div&gt;"</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    echo </span><span class="str">"&lt;/div&gt;\n"</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
echo </span><span class="str">'&lt;/pre&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;/body&gt;'</span><span class="pun">;</span><span class="pln">
echo </span><span class="str">'&lt;/html&gt;'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	Просто и сердито.
</p>

<p>
	На выходе мы получаем каталогизированный список программного обеспечения, используемых ключей и списка хостов на которых были найдены эти ключи с сортировкой по сетям.
</p>

<p>
	<img alt="get-windows-office-keys.png" class="ipsImage ipsImage_thumbnailed" data-fileid="487" data-unique="ae5494h2d" src="https://it4it.club/uploads/monthly_2017_04/get-windows-office-keys.png.d402c1b9ca705edc7687270910bda144.png"></p>

<p>
	Также в скрипте можно указать список ключей и дать им имена.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_162_13">
<span class="pln">$myKeys </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">
    </span><span class="str">'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Управляющая компания'</span><span class="pun">,</span><span class="pln">
    </span><span class="str">'YYYYY-YYYYY-YYYYY-YYYYY-YYYYY'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Завод №1'</span><span class="pun">,</span><span class="pln">
    </span><span class="str">'ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Складская зона'</span><span class="pun">,</span><span class="pln">
</span><span class="pun">);</span></pre>

<p>
	Удобно если требуется явно указать на какие подразделения или объекты приобреталась та или иная лицензия. Все совпадения будут выделены красной подписью.
</p>

<p>
	<strong>Выводы</strong>
</p>

<p>
	Из плюсов, это явная простота и стоимость данного решения. Начальную статистику можно получить уже через пару часов после поднятия вопроса о необходимости иметь результат еще вчера. Наглядность представления. Можно добавить расчет стоимости поддержания данного софта в "деревянных" или сразу в "бакинских", ну и естественно принять соответствующие меры, какие, решать уже Вам.
</p>

<p>
	Из минусов, это не 100% результативность т.к статистика будет получена только по тем машинам, которые были онлайн на момент сканирования. Отсутствие системы кэширования для накопления данных при периодических опросах сети. Хотя последнее <u>можно исправить средствами PHP</u>, но пока такая задача не ставилась.
</p>
]]></description><guid isPermaLink="false">66</guid><pubDate>Thu, 20 Apr 2017 10:45:37 +0000</pubDate></item></channel></rss>
