Архив рубрики: Секреты CLI

>“Нюхаем” сеть без сниффера… Часть 2

>

MC91021636214Как я рассказывал в предыдущем эпизоде, я говорил, что сбор трафика с помощью netsh это не только ценный мех так же предоставляет нам море информации о системе, на которой мы его запускали. При запуске трассировки создается .cab файл, который содержит другие файлы: 33, чтобы быть точным (по крайней мере у меня получилось 33). Этифайлы предоставляют чертову уйму информации о сетевой конфигурации компьютера, а так же кое-какие логи. Давайте посмотрим на эти файлы:

1) adapterinfo.txt: информация о драйверах Ваших сетевых интерфейсов:

image

Может ли это быть полезным? Да легко. Например, если Вы видите драйвер, который старше Вас, то, может быть, самое время его обновить? Всяко разно, это хоть какая-то информация для начала поиска проблем.

2) dns.txt: в этом файле лежит вывод команды ipconfig /displaydns, в котором содержится кеш DNS-клиента

image

3) envinfo.txt: все, что Вы желали знать о Вашей беспроводной сети и даже больше. Драйверы, поддерживаемые методы аутентификации и протоколы шифрования, интерфейсы и их состояние, настройки WLAN, профли и прочее…

image

4) filesharing.txt: nbtstat –n, nbtstat –c, net config rdr, net config srv, net share

image

5) gpresult.txt: без комментариев

6) neighbors.txt: arp –a, netsh interface ipv6 show neighbors (вызывать netsh из netsh… матрешка, ага… ;) )

7) netiostate.txt: в моем случае тут настройки Teredo

image

8) osinfo.txt: на первый взгляд похоже на вывод команды systeminfo, но на самом деле немного другая информация, что не умаляет ее полезности

image

9) Report.etl: Какой-то трейс. Я туда еще не смотрел, но наверняка что-то полезное ;)

10) wcninfo.txt: информация обо всем беспроводном. Состояние служб, инфомация о файлах, ipconfig и всякое такое. 

image

11) wfpfilters.xml: Тут, похоже, лежит описание правил локального сетевого экрана в XML-формате

12) windowsfirewallconfig.txt: конфигурация того же файрвола. Включен ли он, его глобальные настройки и прочая и прочая

13) еще несколько файлов, которые содержат различные журналы событий, относящиеся к сети, а так же копии ветвей реестра и проччую информацию

image

14) Report.html: тут лежат линки ко всем описанным выше файлам – для удобства

image

Ну вроде бы и все. На самом деле, во время поиска корней той или иной проблемы я частенько был вынужден запрашивать то один, то другой кусочек данных, не имея возможности заранее предугадать в чем проблема и не рискуя требовать все сразу. Теперь я могу дать им всего две команды и получить все скопом, да еще и сетевой трафик записать. Я в восторге =)

>“Нюхаем” сеть без сниффера…

>

MC910216362[1]Частенько при решении разнообразных проблем приходится анализировать сетевой трафик. Обычно это требует установки какой-нибудь программы типа NetMon, WireShark или чего-нибудь еще в том же стиле. И все бы ничего, когда бы это было всегда возможно и эффективно. А что если “на том конце” какой-нибудь “продажный менеджер”, который в упор не желает этим заниматься? Или политика безопасности запрещает ставить дополнительное ПО на сервер? Да и вообще для одного раза ставить какую-то софтину – не очень многим нравится такая идея.
В общем, как все уже догадались, решение есть. Я тут недавно прочитал в одном из блогов среди других не менее замечательных вещей (этот блог входит в топ-5 моих любимых, если вообще не самый интересный для меня, кстати) совершенно чумовую статью, в которой есть решение для такой проблемы.
В кратце, Вам более не нужно ставить, скажем, NetMon на W7/2008 R2, чтобы захватить трафик. Это можно сделать с помощью встроенной утилиты, а именно netsh. Правда, Вам все еще понадобятся
1) права локального администратора на исследуемом компьютере
2) NetMon, чтобы проанализировать полученные данные, после того, как их сбор будет завершен. Но его Вы можете использовать на любом другом компьютере. 
Как это работает? Просто превосходно ;)
1) Начинаем сбор:
netsh trace start capture=yes tracefile=<PathToFile>

image
2) Потом воспроизводим проблему. Я запустил свой chrome (слишком много вкладок открыто в IE ;) ) и сходил на сайт www.microsoft.com.
3) Останавливаем:
netsh trace stop
image
Обратите внимание, что трассировка создала два файла: .etl and .cab. ETL это как раз тот, в котором записаны наши пакетики. Второй… Это то, что даже добавляет “чудесности” этому методу, но мы обсудим его в следующей статье. 
4) Открываем наш файл на любом компьютере с помощью Network Monitor:
image
Ой… Что это с нашими парсерами? Если взглянуть поближе, то мы увидим следующее: 
Process: Windows stub parser: Requires full Common parsers. See the «How Do I Change Parser Set Options(Version 3.3 or before) or Configure Parser Profile (Version 3.4)» help topic for tips on loading these parser sets.
Что ж, очевидно, некоторые парсеры не подключены. Давайте это сделаем, благо, это легко (да, я использую NetMon 3.4). Идем в tools->options
image
Смотрим на вкладку Parser Profiles:
image
И включаем профиль Windows нажав на нем правой кнопкой и кликнув опцию Set As Active:
image
И вот теперь все кристально ясно:
image
5) Ну итеперь делаем все, что нам нужно с помощью NetMon, например, посмотрим на DNS-запрос от имени Chrome:
image
Ну не здорово ли? Точно здорово, потому что мы еще не смотрели на .cab-файл, который содержит тонны полезной информации… Но для этого я отвел следующую статью.

>Секреты %systemroot%System32: defrag

>

Эта команда тоже, кажется, используется чем дальше, тем меньше. Частично, возможно, из-за того, что производительность современных компьютеров позволяет не беспокоиться о незначительной фрагментации, пока еще не слишком поздно она еще незначительная. Частично из-за того, что часть мифов о ней успешно прекратили свое существование. Но в основном потому, что нвчиная с VIsta дефрагментатор запускается автоматически раз в неделю. Ранее (во времена 9х) у нас был расчудесная GUI-программа, теперь у нас есть только утилита командной строки и весьма урезанный (без той самой чудесной визуализации статуса фрагментации: она была абсолютно бесполезная, но просто очень радовала глаз. Я даже думаю иногда, что именно из-за отсутствия этой визуальной магии теперь все меньше и меньше людей пользуется дефрагментацией, а не по описанным выше причинам ;) GUI для управления процессом.

В любом случае, запуск этой программы на регулярной основе означает, что у нас не так уж высок обычно процент фрагментации: 

clip_image001

И все-таки нам не хватает той самой магии =(

Как бы то ни было, если Вам не нравится, что этот “чертов компьютер управляет моими данными”, или Вы просто недостаточно удовлетворены  расписанием, то Вы можете отключить его с помощью программы dfrgui:

clip_image002

Тут же можно изменить время, когда она запускается, или еще сожно создать какое-нибудь сложное расписание в менеджере задач:

clip_image004

Вы даже можете создать скрипт, который управляет фрагментацией, повинуясь какой-то своей, одному ему ведомой логике. Скажем, зачем даже думать о запуске дефрагментатора, если Вы видите картину, навроде вот этой:

clip_image005

Для этого можно создать скрипт, который будет проверять, а есть ли фрагментация и насколько она существенна, дефрагментирует фрагментированное, если нужно, консолидирует свободное место время от времени, пляшет и танцует.

Я же, по правде говоря, вполне комфортно себя чувствую с настройками по-усолчанию, что не мешает мне, впрочем, помнить о существовании других вариантов.

>Секреты %SystemRoot%System32: compact + convert

>

Я достаточно занят в последнее время, потому сегодня всего лишь краткий обзор двух малополезных в настоящее время (но было время – эгегей!) утилит: compact и convert. Первая еще где-то используется, а вот вторая, как мне кажется, уже практически отмерла. Но тем не менее…

compact

Помните cipher? Для меня они всегда шли рядом: cipher шифрует, compact сжимает данные на NTFS. Нужно заскриптовать сжатие или разжатие данных или просто слишком лениво кликать в куче окошек? Тогда команда для Вас. Но, если серьезно, многие ли серьезно используют эту возможность? Она одна из самых нелюбимых мной, если честно. И все же, если оно Вам нужно – команда Вам поможет.

convert

А вот эту я не использовал уже очень долго. Правда, многие ли чейчас могут похватстаться системой, которую можно и нужно преобразовать в NTFS? Разве что какую-нибудь флешку. Но в свое время для меня это был хит: движение от Windows 9x к Windows 2000 или XP. Прийти к знакомым и вместо извлечения из загашника диска с Partition Magic и всяких прочих плясок просто набрать встроенную команду и – вуаля! Чувствовал себя Гуру ;) Так что, когда я обнаружил, что она все еще находится в составе моей W7, я решил почтить ее память. Впрочем, может все еще есть какое-то использование этой утилиты, о котором я не знаю – скажите мне, тогда =)

>Секреты %SystemRoot%system32: cipher

>

Следующая команда в списке редко вспоминается, пока не влетает пользователь с воплем “я сменил пароль и где теперь все мои зашифрованные данные!”. Знакомая ситуация? Мне не очень, но я слышал предостаточно ужастиков на эту тему. Резервное копирование ключей – ключ к спасению в данной ситуации (ну или агент восстановления). И с этим вполне может помочь наша команда. А еще с обновлением ключа шифрования на файлах. И с созданием ключа восстановления.

Про все это полно статей, однако, когда я решил взглянуть на утилиту поближе, я вдруг обнаружил для себя очередную новую функцию: добавив аргумент /W и имя какой-нибудь папки, мы уничтожим все данные, все еще содержащиеся в “пустом” месте на диске, содержащем эту папку (если папка это линк на другой диск, то будет зачищен этот самый “другой” диск). Что при этом происходит:

1) Создается папка EFSTMPWP:

2) В ней создается временный файли (или несколько)

image

3) Место в них заполняется нулями, потом единицами, а потом все это отполировывается случайными числами:

image

Каждый из этих шагов делается пока не заполнится все место на диске, потом все повторяется:

image

image

image

Разумеется, это достаточно длительная операция, особенно для больших дисков. Тем не менее, если бы я проектировал эту процедуру, то я бы сделал просто и со вкусом: в три прохода шифровал бы каждый свобоный кластер на диске с помощью случайного ключа. Впрочем, оно и к лучшему, что это был не я, процедура и так не короткая ;)

Да, кроме всего прочего, команда просит Вас закрыть все приложения, очевидно, чтобы затереть место и под временными файлами.

Что еще почитать:

cipher /?

http://technet.microsoft.com/en-us/library/cc771346(WS.10).aspx

http://support.microsoft.com/kb/295680

http://support.microsoft.com/kb/814599

>BITS и PowerShell

>

Вася Гусев меня пристыдил тем фактом, что я распространял знание о BITSAdmin, вместо соответствующих командлетов PowerShell. Что ж, в какой-то мере он был определенно прав:

  • 1) PowerShell великолепно самодокументирован

2) Писать скрипты на нем намнооого проще, чем в стандартном интерпретаторе комманд

3) Его при некоторых условиях может ыбть чуть проще использовать в некоторых базовых ситуациях типа “просто дай мне этот чертов файл”

4) Многие просто любят PoSh.

Потому я чуток почитал (Disclaimer: действительно “чуток”, потому если ниже есть ошибки, то прошу мне на них указать) и мне показалось, что задача, типа описанной мной в упомянутой статье должна решаться (и Вася тоже так сказалSmile ) одной командой:

Start-BitsTransfer –source <URL> –destination <PathToFile>

но мне, как выяснилось, нужно было лучше изучить вопрос:

image

Оказывается, по-умолчанию модуль для BITS не подгружается. Ок, нужно это дело исправить (а если Вы пользуетесь BITS часто, то лучше это загнать в профиль, тогда не нужно будет делать это каждый раз):

image

и теперь у нас есть наши командлеты:

image

Ну-с, приступим:

image

Отлично, не правда ли? Оно даже показывает прогресс закачки визуально. А вот и не прекрасно, потому что как только я отклчил мой сетевой интерфейс, моя закачка была отменена и я не смог найти никаких ее следов:

image

Даже несмотря на то, что утверждалось, что “BITS will try again” – он так этого и не сделал и не было ни одной зарегистрированной BITS-задачи. Я, если честно, не знаю почему (пусть мне объяснят =) ), но нашел как этого избежать. Просто добавьте параметр “-Asynchronous” к строке и все сработает как нужно, хотя уже и нельзя будет увидеть этот прекрасновидный статус загрузки:

image

image

Однако, даже несмотря на то, что статус закачки сменился в конце концов на “Transferred”, в целевой папке был только .tmp файл. На самом деле, команда без параметра “-Asynchronous” просто выыкладывает Вам файл, куда нужно, но мы уже знаем недостатки этого метода. Так что я вынужден был закатить солнце закончить закачку вручную:

image 

В общем, не слишком большая разница с BITSAdmin. К тому же я не смог найти как добиться такого же эффекта, как с fasion BITSAsmin /MONITOR.

Суммируя:

1) PoSh при скриптинге — рулит

2) Вы можете использовать для интерактивных задач любой набор команд, который Вам нравится. Однако помните, что BITSAdmin могут отменить в любой момент

Потому, пока я не прочитаю внимательно все сам или мне не объяснят, как делать по другому, я буду использовать PoSh, везде, где смогу, а мониторить задачи буду с помощью BITSAdmin. ;)

>Секреты %SystemRoot%system32: Choice

>

Мы не станем обсуждать следующие три команды – chglogon, chgport и chguser – поскольку они уже все заменены на change. Так что следующим подопытным будет

choice

Будучи не слишком полезным сам по себе, он может понадобиться в bat-скриптах, которые, повторюсь вновь, могут быть весьма и весьма серьезными (хотя я все-таки больше люблю PowerShell, который позволяет мне делать глупости быстрее и более качественно ;) ). Так что если Вам нужно сделать *.bat с нелинейным развитием событий, зависящим от выбора пользователя, то можно использовать эту команду. Например, можно спросить как-то так:

image

=))) Более того, можно выставить дефолтный ответ и запустить таймер (если пользователь такой ленивый, что и кнопку нажать не может):

image

Почти та же картинка, но не нажимал никаких кнопок, ответ был выбран через 5 секунд ожидания автоматически. 

Получение, собственно, ответа, не слишком прямолинейно. Он не возвращается как результат выполнения команды, а помещается в переменную %ERRORLEVEL%. Не слишком большая проблема, но… Я все-таки предпочитаю PoSh. Тем не менее, если Вы все еще зависите от bat-скриптов, то это Ваш “choice” ;)