Friday, 19 January 2018

Форматированный вывод WMIC.


Всем привет.

Пару дней назад я отвлекался на использование WMIC. Так вот, эта штука имеет в своем арсенале форматированный вывод. А не только на консоль. Т.е. можно получить на выходе CSV файл, и даже HTML. Всего лишь добавляем  два параметра в строку output и format:

wmic /output:"e:\my.html" OS Get /format:hform

и при первом старте вы, скорее всего, получите сообщение об ошибке Invalid XSL format (or) file name. Как и я.

Дело в том что в неанглоязычных версиях Windows WMIC не находит свои шаблоны для вывода. Поэтому правильно будет писать так:

wmic /output:"e:\my.html" OS Get /format:"%WINDIR%\System32\wbem\ru-Ru\hform"

И вауля, наш файлик готов. Не меняйте последовательность output и format.

У вывода много разных форматов, также легко создаем файл CSV:

wmic /output:"e:\MACs.csv" path Win32_NetworkAdapterConfiguration Where IPEnabled=True get MACAddress /format:"%WINDIR%\System32\wbem\ru-Ru\csv"

Успехов.

Wednesday, 17 January 2018

Как найти оптимальный размер MTU.

Всем привет.

Один из простых и наиболее точных способов определения оптимального размера MTU (Maximum Transmission Unit)  - пинг тест. Вы просто отправляете запросы и постепенно снижаете размер пакета до тех пор, пока пакет больше не подвергается фрагментации. Кроме того, этот простой тест подходит для точного тестирования конечных точек, пользователи могут найти более маленький размер MTU более удобным для себя. 

Как найти правильный размер MTU для домашней сети с роутером TP-Link хорошо рассказано здесь http://www.tp-link.ua/ru/FAQ-190.html.

В связи с дополнительными сложностями, в VPN (виртуальные частные сети) необходим иной способ тестирования MTU. Если у вас сеть с несколькими компьютерами, то каждый компьютер должен быть настроен с одинаковым размером MTU. Кроме того, некоторые компьютеры могут использовать несколько сетевых адаптеров или адаптер клиента VPN на одном компьютере. Удостоверьтесь, что вы изменяете сетевой адаптер, имеющий отношение к службе широкополосного вещания или VPN клиенту.

А теперь узнаем как выполнить тоже самое в сети с маршрутизатором Cisco.

Если от маршрутизатора посылается обычная команда ping, адрес источника этой команды ping является IP-адресом интерфейса, который используется пакетом для выхода из маршрутизатора. При использовании расширенной команды ping IP-адрес источника может быть изменен на любой IP-адрес в маршрутизаторе. Расширенная команда ping используется для более тщательной проверки доступности хоста и возможности сетевого подключения. Расширенная команда ping работает только в привилегированной командной строке EXEC. Обычная команда ping работает как в пользовательском, так и в привилегированном режиме EXEC.

Saturday, 13 January 2018

The protection of Powershell script.

Hi there.
 
If you know the obfuscation for VBScript files was with tiny tool as Script Encoder from Microsoft. We could get VBE file instead VBS file. VBE file could be run easy as VBS: cscript file.vbe. This was poor protection for VBS scripts. Anybody could find in Internet decoder for VBE.
 
And what is situation about such protection for Powershell script?
 
For example, I know fine GUI tool as PowerGUI.
 
Script compilation to executable files (binary exe) is one of the features we have added in PowerGUI version 3.0 or above. You would likely want to use compile a script when you want to share it in the enterprise environment and you are not sure whether the other person is comfortable running scripts or you simply don’t want risking someone modifying the your code.
 
To compile a PowerShell script:
  • open the script in PowerGUI Script Editor,
  • on the Tools menu, click Compile Script,
  • then specify the name and path for the exe file you want to create EXE-file.
 
The additional options you get are:
  • show or hide the PowerShell Console window when executing the script,
  • automatically close or keep the console window,
  • protect the script source code by obfuscating it using a password you specify,
  • add other PowerShell scripts  to the exe (if you have another script which your main script is using).
However you shouldn't to be calm. You have to know some moments. You have to type Password each time for running your exe-file. So you can't to share your exe-file without password. And if your exe-file take any error during execution, so your powershell script will be locate in PowerGUI temporary folder in clear type.

Be careful.
 
 
 

Thursday, 11 January 2018

Как управлять Wanscam камерой с помощью Powershell?

Всем привет.

Как управлять Wanscam камерой с помощью Powershell?

Автор идеи купил китайскую wanscam вебкамеру с wifi, инфракрасной подсветкой, микрофоном, динамиком, поворотным механизмом и web-интерфейсом. И решил автор сделать из этой web-камеры что-то вроде домашней видео-охраны.

Как он пишет идея была следующая: пингуем смартфоны или ноутбуки дома, если пингуются - значит кто-то есть дома, если не пингуются - значит дома, скорее всего, никого нет, или они просто забыты. Когда дома никого нет - камера поворачивается в сторону, например, двери и включается в режим "motion alarm", то есть оповещает нас если что-либо в кадре начинает двигаться. Если же дома кто-то есть - отключаем "motion alarm" и поворачиваем камеру в стенку.

Что делать с любимой кошкой?) Ограничить область сканирования уровнем выше полуметра от пола. Или ничего не делать, ибо кошки не так активны днем как нам кажется.


А вот его Powershell скрипт с помощью которого это все было реализовано:


#Общие параметры
$hour = (Get-Date).Hour #текущее время
$date = Get-Date -format dd-MM-yyyy
$file_temp = "C:\Temp\WebCam\camera.txt"
$file_log =  "C:\Temp\WebCam\Camera_log-" + $date + ".txt"
$ping = new-object System.Net.NetworkInformation.Ping


#Сетевые параметры
#увы, но пароль к камере здесь в открытом виде
$camera_user_pass = "user=CameraUser&pwd=CameraPassword"
$camera_ip = "192.168.2.30"
$camera_ip_port = "http://"+$camera_ip+":8888/"
$mail_username = "MyHouse"
$mail_from = $mail_username+"@gmail.com"
$mail_to = "HugMe@gmail.com"
#пароль к gmail тоже в открытом виде
$mail_pass = "mail_password"
$wifi_ip = "192.168.2.10"  #телефон автора
$wifi_ip2 = "192.168.2.11" #резервный
$wifi_ip3 = "192.168.2.12" #ноут


#А доступна ли web-камера по ping?
$i = 0;$time = 'timeout'
While (($i -lt 3) -and ($time -eq 'timeout')) {
 $i++
 $reply = $ping.send($camera_ip) #пинг в адрес камеры
 $time = $reply.RoundtripTime
#Упс, а наша камера недоступна. Надо об этом срочно сообщить мне!
 if (($reply.status -ne "Success") -and ($i -eq 3)){
  write-host "send mail"
#заголовки сообщения
  $SMTPServer = "smtp.gmail.com"
  $SMTPPort = "587"
  $subject = "Camera Timeout"
  $body = "Camera Timeout"
#текст в формате HTML
  $message = New-Object System.Net.Mail.MailMessage $mail_from, $mail_to
  $message.Subject = $subject
  $message.IsBodyHTML = $true
  $message.Body = $body
  $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
  $smtp.EnableSSL = $true
  $smtp.Credentials = New-Object System.Net.NetworkCredential($mail_username, $mail_pass)
отправляем сообщение
  $smtp.Send($message)
 }
}

Wednesday, 10 January 2018

Системные требования для ABBYY Recognition Server.

Привет.

Лет пять тому наравне с ABBYY Fine Reader мне довелось внедрять для нашей канцелярии еще один продукт компании ABBYY. Это ABBYY Recognition Server.

Это было весьма актуально ибо ABBYY Recognition Server обеспечивает полный перевод бумажного архива в электронный вид.

ABBYY Recognition Server позволяет автоматически перевести архив бумажных документов  в электронный вид: распознает бумажные документы и сохранит их в электронный архив в необходимом формате – текстовом или в виде изображения. Сканирование и распознавание документов происходит в автоматическом режиме, требуется лишь правильно настроить сценарии обработки.

Появилась новая возможность доступности сервиса распознавания документов для каждого сотрудника не сходя с его рабочего места. Для этого надо было установить в локальной сети ABBYY Recognition Server - и сервис распознавания стал доступен всем сотрудникам организации через ABBYY Recognition Client. Каждый сотрудник получил возможность за несколько минут распознать нужный ему для работы документ.

Однако при установке и запуске самого сервера пришлось малость повозиться. Обычное дело, ибо сам продукт пришел без каких либо ценных указаний сверху. Но ведь и политику безопасности в компании никто не отменял. Очень быстро я пришел к выводу что без компромиссов с определенными запретами мой ABBYY Recognition Server работать не будет. Поэтому для экономии вашего времени ниже привожу список опций которых без которых сервер не хотел запускаться.

При установке ABBYY Recognition Server 2.0 на сервер Microsoft Windows необходимо было выбрать опции COM и Web services.

Кроме того на сервере должны быть запущены службы "Локатор удаленного вызова процедур" и "Удаленный вызов процедур (RPC)".

На сервере должны быть также установлены IIS и NET Framework 2.0+.

И последнее - в сетевых настройках должны быть активны "Клиент для сетей Microsoft" и "Служба доступа к файлам и принтерам сетей Microsoft".

Вот такая была ситуация. Скажу вам честно что ABBYY Recognition Server потребовал некоторых уступок в плане безопасности от сервера Microsoft Windows. Возможно 4-я версия в этом отношении менее требовательна.

Успехов.

Tuesday, 9 January 2018

Cпособ замены имени компьютера в OSD MS SCCM.


Всем привет.


При установке (замене) ОС пользователя, пожалуй, самой востребованным является желание в явном виде указать те или иные параметры перед началом установки самой ОС. Чаще всего таким параметром является имя компьютера (hostname). На самом деле пользователю глубоко все равно почему его компьютер называется SWEETCAKE, а не CMPBOSS0014. Но далеко не все равно это может быть сетевому администратору или офицеру информационной безопасности. Тем более если на предприятии существует политика, которая предписывает именовать все компьютеры, опираясь на их роль и территориальную принадлежность. Например DBI-F01-0014. Особенно это актуально при перемещении пользователя со своим табельным номером. Или новое штатное расписание переписало его в новое подчинение. Ну не бегать же каждый раз и менять имя компьютера по таким «пустякам». Тем более что такая операция влечет за собой как минимум вывод ПК из домена, перезагрузку ОС, замена имени, перезагрузку, ввод ПК в домен, и еще одну перезагрузку. Ничего не забыли?

Одним из оптимальных способов решения данной проблемы является заведение записи компьютера в базе MS SCCM. В этом нам поможет механизм Computer Association, смысл которого заключается в ручном добавлении пары Имя компьютера – MAC адрес в базу данных SCCM.

Для того чтобы вручную добавить компьютер в базу данных SCCM необходимо перейти к пункту: Configuration Manager Console – Site Database – Computer Management – Operating System Deployment – Computer Association – Actions: Import Computer Information. В появившемся мастере доступны два способа добавления записей: Import computer using file (добавление группы компьютеров с помощью CSV файла) и Import single computer (добавление одиночного компьютера).



Для примера добавим одиночный компьютер с желаемым именем W-TST-0001 и MAC-адресом 00:E0:4C:62:02:B0. Если мы добавляем новый, ранее не известный SCCM компьютер, то поле SMSBIOS GUID можно не заполнять, оно будет заполнено автоматически. Для существующего ПК эти параметры можно узнать запросом Powershell:

Get-WmiObject win32_computersystemproduct -Property 'UUID'
Get-WmiObject Win32_NetworkAdapterConfiguration -Property 'MACAddress'

Или более точнее:

$MyMac = Get-WmiObject -query "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True"
$MyMac.MACAddress

Или c помощью WMIC:

wmic path win32_computersystemproduct get uuid
wmic path Win32_NetworkAdapterConfiguration Where IPEnabled=True get MACAddress

Параметром Source computer мы можем указать уже существующую запись в базе данных SCCM, с которой будет ассоциирована новые данные (имя и MAC-адрес).

Далее указываем коллекцию в которую будет добавлена запись.


Теперь рассмотрим способ добавление группы компьютеров через файл.
Для начала необходимо сформировать сам файл comp.csv:
W-TST-0001, 03000200-0400-0500-0006-000600090009,0A:00:27:00:00:0F
W-TST-0021, 03000200-0400-0500-0006-000600090008,05:06:07:08:FD:1A
Затем выбираем пункт: Import computer using a file. Указываем место нахождение файла, и соответствие столбцов файла и полей базы данных.


Но такой способ (Computer Association) приемлем, только если у вас малое количество компьютеров (до 100) и при этом он требует значительных трудозатрат, предварительно необходимо собрать MAC и UUID компьютеров компании и внести их в файл.

Приблизительно так мы и поступили чтобы решить последствия последней оптимизации нашего коллектива.

Удачи.

Monday, 8 January 2018

Построение dashboard в PowerShell.

Всем привет.

Во времена, когда я писал серию постов о Powershell, мне попадалась информация о некоторых интересных командлетах и техниках PowerShell. Например так я писал вам как организовать сетевой сниффер с помощью Powershell.

Но вот другой автор Alexandra Varonis (или авторка?) сделал выдающееся открытие - PowerShell может быть самостоятельным средством защиты!

Основываясь на таком предположении автор сделал серию отличных публикаций о PowerShell. Настоятельно рекомендую их к прочтению.

Есть перевод материала на хабре, но там многие ссылки нерабочие.

Полигон автора был настроен на использование PowerShell в качестве инструмента мониторинга системы для отслеживания файлов, процессов и действий пользователей. Во время прочтения меня постоянно не покидало ощущение того что это новая версия механизма подписки на события, который существует еще со времен WSH. Сейчас известны 4 типа событий которые может обработать в PowerShell: Engine Events, Object events (.Net), CIM (PowerShell V3 only) и WMI events. Более подробно можно узнать про типы здесь
https://learn-powershell.net/2013/01/30/powershell-and-events-engine-events/

В полигоне непосредственно автор использует командлет Register-EngineEvent.  Командлет Register-EngineEvent создает подписку на события, создаваемые обработчиком Windows PowerShell и командлетом New-Event. Для задания события используйте параметр SourceIdentifier. Этот командлет позволяет подписаться на события, создаваемые командлетом New-Event. Эти события автоматически добавляются в очередь событий сеанса без оформления подписки. Однако создание подписки позволяет перенаправлять события, задавать действия для реагирования на них, а также отменять подписку. При возникновении события, для которого создана подписка, это событие добавляется в очередь событий сеанса. Чтобы получить события из очереди событий, используйте командлет Get-Event.

Пример создания подписки на событие обработчика Windows PowerShell на двух удаленных компьютерах:
С:\PS>$s = new-pssession -computername Server01, Server02
C:\PS> invoke-command -session $s { Register-EngineEvent -sourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -forward }

Первая команда создает сеанс PSSession на каждом из удаленных компьютеров. Вторая команда использует командлет Invoke-Command для выполнения команды Register-EngineEvent в рамках удаленного сеанса. Для определения события команда Register-EngineEvent использует параметр SourceIdentifier. А для перенаправления событий из удаленного сеанса в локальный сеанс используется параметр Forward.

Saturday, 6 January 2018

Кошкин дом своими руками.

Всем привет.

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

Просто куб делать не хотелось, поэтому получилось что-то типа терема. Разложил картон, и как в детстве, начертил грубо терем в развороте не забывая про хвосты на крепление стенок. Вырезал, согнул под линейку по всем сгибам, и начал крепить скотчем. Хотелось бы степлером, но он не везде достает. Степлером прошелся в местах кровли. Кстати, изначально в тереме запланировано два круглых входа, и котику удобнее забираться, и собирать сам терем изнутри так легче.



Ну вот в принципе и все. Стелем что-то теплое и мягкое внутри и приглашаем свое мяу-мяу на новоселье.

Я был уверен что моя идея не нова. И правда, кошкин дом уже давно поставлен на конвейер. Вот парочка примеров, от которых дух захватывает даже у меня.



Вот такие дела. Дерзайте, и вас получится.








Friday, 5 January 2018

Удаление зависшей сессии в MS SQL.

Привет.

Весьма коротко. Зависшие сессии при работе с базами данных мешают всем. Они едят ресурсы и не дают сделать многие операции по профилактике базы данных. Ранее я писал как отлавливать такие сессии в Oracle. Сегодня в двух словах расскажу как я это делал в MS SQL.

Чтобы сбросить зависшие сессии надо в MS SQL Enterprice Manager-e на нужной базе данных выбрать задачу "Detach database", далее кликнуть "Сlear" и "Cancel". Это все.


На рисунке выше кнопка "Сlear" не активна потому как у меня не было никаких сессий в базе данных, об этом говорит и количество соединений равное 0.

Успехов.

Thursday, 4 January 2018

Модули диагностики в Powershell, часть 2.

Всем привет.


Продолжаем тему модулей диагностики в Powershell.

2. Module PSDiagnostics.
                                                            
Прежде всего напомню что модули, которые содержат объявления функций и включают .PSM1-файлы, требуют, чтобы была уставлена политика, разрешающая исполнение подписанных сценариев.
 
Запрос Get-Command -Module PSDiagnostics нам выдаст список из 10-ти функций:
Disable-PSTrace, Disable-PSWSMan CombinedTrace,
Disable-WSManTrace, Enable-PSTrace,
Enable-PSWSManCombinedTrace,
Enable-WSManTrace, Get-LogProperties,
Set-LogProperties, Start-Trace и Stop-Trace
 
К сожалению, для этих функций отсутствует какая-либо справка. Это означает, что нам остается только догадываться, что делает та или иная функция и как ее можно использовать.
Итак, что делают функции модуля PSDiagnostics? Обычно, для нахождения подобной информации используется Get-Help. Ниже приведен вывод справки для функции Enable-PSTrace.
PS C:\> help Enable-PSTrace
NAME
    Enable-PSTrace
SYNTAX
    Enable-PSTrace [-Force] [-AnalyticOnly]
ALIASES
    None
REMARKS
    None
 
Да… Понятнее не стало. Однако, одна их отличных вещей, касающихся функций в Windows PowerShell – это диск Function:. Таким образом я могу увидеть содержимое функции и определить, что же она делает.



Tuesday, 2 January 2018

Модули диагностики в PowerShell, часть 1.

Всем привет.

Недавно мы рассматривали подробно обработку ошибок в PowerShell. Но сам PowerShell богат на такие механизмы.

Я бываю хорошим занудой для пользы дела, поэтому при первом взгляде на список загруженных модулей в PowerShell по умолчанию я нахожу три подходящих модуля для диагностики: PSDiagnostics, Microsoft.PowerShell.Diagnostics и TroubleshootingPack.


Но для диагностики чего же эти модули? А вот с этим и будем разбираться ниже.

1. Module: Microsoft.PowerShell.Diagnostics

Запрос Get-Command -Module Microsoft.PowerShell.Diagnostics
нам выдаст список из 5-ти командлетов:
Export-Counter
Get-Counter    
Get-WinEvent  
Import-Counter   
New-WinEvent   

Командлеты этого модуля позволяют провети мониторинг производительности системы, выявлять и устранять ситуации, чреватые нарушением нормальной работы ОС. Я писал про это ранее, поэтому дальнейший материал излагаю бегло.

Для мониторинга производительности используются следующие команды:

Get-Counter — получат объекты, представляющие текущее значение счетчика производительности, непосредственно от инструментария Windows для мониторинга производительности. Поддерживается вывод наборов и отдельных счетчиков производительности, установка размера и интервала выборки данных, а также учетных данных пользователей, уполномоченных для просмотра сведений о производительности.
Get-Counter [-MaxSamples Размер_выборки] [-Counter] Путь_к_счетчику
[-SampleInterval Интервал] {AddtlParams}
Get-Counter -ListSet Имя_набора {AddtlParams}
{AddtlParams}
[-Credential Объект_уч._данных] [-ComputerName Компьютеры]

Unicode-decoder for ReaslSecure ISSED.

Hi all.

A few years ago I wrote some words  about IBM SiteProtector. It was next version of IDS after RealSecure. I remembered that I used my SQL queries, which I have written myself for monitoring of security. But I had one problem with reading parameter URI from ISSED database (MSDE 2000). I mean this URI string appeared in database as Unicode. So it was as %D0%BA%D0%BE%D1 in my morning report. It doesn't readable on the fly.

This situation doesn't permit us to make quick analysis. So I decided to add Unicode-decoder in my code. I used JScript.


This is command line for OSQL-utility:
osql -n -E -d ISSED -i ev40.sql -o ev40.log -w 840


This is ev40.sql query code:
select
e.EventDate,
e.OrigEventName,
e.DisplaySrcIPAddress, e.DisplayDestIPAddress,
ep.EventID, ParamValue
from Events e, EventParams ep, EventDay d
where
e.EventID = ep.EventID and
e.OrigEventName like 'HTTP_%' and
d.DayID = e.DayID and
(ep.ParamName = ':URL' or
 ep.ParamName = ':field_value'
 or
 ep.ParamName = ':arg')
and
 ep.ParamValue like '%http%'
and
(d.CurrentDate = '09.13.2015')

Monday, 1 January 2018

SmartBank via TCP/IP.

Привет всем.

Освобождаясь под Новый год от того что вошло в историю прошлых лет, часто находишь уникальные вещи. Которые тебе дороги как память, особенно если ты их прожил сам. И знаешь там каждый момент.

Так перебирая цифровой архив своих знаний мне попалась самописная инструкция. Инструкция по переводу отделений банка на протокол TCP/IP. Это было еще в далеком 2000-м году. Но написание такого мануала в 40 страниц помогло мне упорядочить мои знания и очень помогло моим коллегам сделать такой перевод сугубо своими силами.

Допускаю что многие сведения из этого мануала технически устарели. Скорее всего сейчас используются другие модели Cisco и Zyxel, и наверняка никто уже не строит бездисковую рабочую станцию на пакетных драйверах. Но тогда все это было. И мы сделали это!

Сотрудникам Винницкой дирекции банка "Украина" посвящается.
Как всегда мануал к прочтению в моей онлайн библиотеке.

Версия на печать

Популярное

Медиа облако