Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Мониторинг USB устройств bat-файлом

Ответить
Настройки темы
CMD/BAT - [решено] Мониторинг USB устройств bat-файлом

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Со скриптами bat не сталкивался, особо не нужны были, но сейчас поставили задачу(кровь из носу надо сделать еще вчера) написать скрипт, который бы мониторил подключенные USB устройства, список разрешенных будет в отдельном файле, если подключаемое USB - устройство совпадает, то все нормально, а если нет, то либо блокирует хост, либо порты(закрыть передачу данных)...
batники, для меня что-то новое, инет ничего дельного не дает, вторые сутки уже сижу, пытают все систематизировать, уже депрессия маячит и начальство наседает! HELP!

Отправлено: 11:42, 26-04-2020

 

(*.*)


Сообщения: 36574
Благодарности: 6706

Профиль | Сайт | Отправить PM | Цитировать


Цитата EvgenBrain:
который бы мониторил подключенные USB устройства, список разрешенных будет в отдельном файле, »
Есть событие в журнале, дальше можно с PowerShell парсить и сопоставлять со списком одобренных устройств.
https://www.techrepublic.com/article...-event-viewer/
Это не для тех, кто
Цитата EvgenBrain:
Со скриптами bat не сталкивался, »
но хороший повод поизучать PowerShell наверное...

Цитата DJ Mogarych:
А что, Защитник умеет фильтровать USB? »
Это фича Windows Defender ATP.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:37, 26-04-2020 | #11



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

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


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Vadikan, да, пришел теперь к power shell... Но так как с ним тоже не сталкивался, ищу как это все реализовать

Отправлено: 11:43, 27-04-2020 | #12


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


EvgenBrain, То, что можно написать скриптами, с точки зрения безопасности - детский лепет и легко обходится. Можно, например, ориентироваться на серийный номер устройства.
Откуда его взять: В командной строке запустить wmic
Код: Выделить весь код
wmic diskdrive get model,name,serialnumber,mediatype >C:\zzzzzz.txt
У меня в файле C:\zzzzzz.txt получилось
Код: Выделить весь код
MediaType                 Model                               Name                SerialNumber                              
Fixed hard disk media     TOSHIBA MK1637GSX ATA Device        \\.\PHYSICALDRIVE0  2020202020202020202059204a36464d46425359  
Removable Media           JetFlash Transcend 32GB USB Device  \\.\PHYSICALDRIVE3  AA00000000000489                          
Removable Media           JetFlash Transcend 8GB USB Device   \\.\PHYSICALDRIVE1  03U0UDBRCJ6HLEYV                          
External hard disk media  WD My Passport 0743 USB Device      \\.\PHYSICALDRIVE2  WX61A93R0348
Будем контролировать 2 вида устройств:
Флэшка- Removable Media
Внешний винт- External hard disk media
Допустим, разрешены 2 устройства с номерами
03U0UDBRCJ6HLEYV
WX61A93R0348
А вот AA00000000000489 будем считать нелегальным и при его подключении выключим комп
А далее на компьютере должен быть запущен vbs-скрипт (например, в автозагрузке)
Код: Выделить весь код
ConType = Array("Removable Media", "External hard disk media")
ConSerial = Array("03U0UDBRCJ6HLEYV", "WX61A93R0348")
    
Quant = 5 * 1000 			'милиСек опроса
FLog = "Z:\Soft_Out\Spy.txt"		'Лог-файл, куда запишется инфа о незарегистрированной флэшке

Spause = 1				'Пауза Сек начала выключения
    
Set WMI = GetObject("winmgmts:")
Do
    Set DAll = WMI.ExecQuery("Select * from Win32_DiskDrive")
    Msg = ""
    Flag = True
    For Each Drv In DAll
        For Each iType In ConType
            If LCase(iType) = LCase(Drv.MediaType) Then
                Flag = False
                For Each iSerial In ConSerial
                    If LCase(CStr(Drv.SerialNumber)) = LCase(iSerial) Then
                        Flag = True
                        Exit For
                    End If
                Next
            End If
            If Flag Then Exit For
        Next
        If Not Flag Then
            Msg = CStr(Now) + vbTab + Drv.MediaType + vbTab + Drv.Model + vbTab + CStr(Drv.SerialNumber)
'            MsgBox Msg
            With CreateObject("Scripting.FileSystemObject")
                Set F = .OpenTextFile(FLog, 8, True)
                F.WriteLine Msg
                F.Close
            End With
            R = CreateObject("WScript.Shell").Run("shutdown.exe /s /f /t " + CStr(Spause), 7, True)
            Exit For
        End If
    Next
    WScript.Sleep Quant
Loop
Скрипт будет опрашивать имеющиеся накопители с заданным периодом (здесь в примере 5 сек)
Здесь прописаны 2 типа контролируемых устройств: "Removable Media", "External hard disk media"
Здесь прописаны 2 серийных номера: "03U0UDBRCJ6HLEYV", "WX61A93R0348"
После обнаружения незарегистрированной флэшки комп через 1 секунду начнет выключаться
При этом в файл (напишите свой путь) будут записаны атрибуты нелегальной флэшки

Но это хилый костыль с легкой возможностью его нейтрализации. Зато всё штатное и ничего доустанавливать не нужно.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-04-2020 в 16:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:23, 27-04-2020 | #13


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, решил протестить скрипт, вообще тишина

Отправлено: 10:29, 29-04-2020 | #14


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


# В первых двух строчках мы считываем наши файлы.
wmic diskdrive get model > received_name.txt
$Trusted_Name = get-content -Path .\trusted_name.txt
$Received_Name = get-content -Path .\received_name.txt

$i = $true
do
{


foreach ($objectTN in $Trusted_Name)
{
$objectTN = $objectTN.tostring().Trim()
$objectTN = $objectTN.Replace(" ","")
$objectTN = $objectTN.ToUpper()
$found = $False

foreach ($objectRN in $Received_Name)
{
$objectRN = $objectRN.Replace(" ", "")
$objectRN = $objectRN.Trim()
$objectRN = $objectRN.ToUpper()


if ($objectTN -eq $objectRN)
{
$found = $True

}

# return $found
}

if ($found -eq $false)
{
Stop-Computer
}
}

} until($i -eq $true)

почему скрипт не работает, ума не приложу, что с vbs, что ps1

Отправлено: 13:18, 29-04-2020 | #15


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать



megaloman, test.txt

Отправлено: 13:23, 29-04-2020 | #16


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, Файл 161196

megaloman, да в диспечере ws есть, я подключаю левую флешку и ничего не происходит

Отправлено: 13:29, 29-04-2020 | #17


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


EvgenBrain,
1. Просил результат wmic
2. Сохраняйте скрипт в 1251 кодировке.
3. Вы понаписывали не то в контролируемых устройствах, надо:
ConType = Array("Removable Media", "External hard disk media"), а вот серийные номера возьмите из результата wmic

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:34, 29-04-2020 | #18


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, да в диспечере ws есть, я подключаю левую флешку и ничего не происходит

megaloman, есть телеграмм?? Очень нужна помощь!

megaloman, есть телеграмм?? Очень нужна помощь!

Отправлено: 13:36, 29-04-2020 | #19


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать



megaloman, Снимок.PNG

Отправлено: 13:43, 29-04-2020 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Мониторинг USB устройств bat-файлом

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Включение/отключение устройств одним .bat файлом BuSHmaker Скриптовые языки администрирования Windows 34 01-04-2019 21:57
CMD/BAT - bat с файлом параметров blacktor Скриптовые языки администрирования Windows 1 01-12-2015 21:06
Разное - помогите с bat файлом vasmixser Программирование и базы данных 6 25-10-2013 12:05
CMD/BAT - Перезапустить службу bat файлом ruslanstep1 Программирование и базы данных 8 26-06-2013 13:03
Разное - странности с bat-файлом бУРов Microsoft Windows 7 0 05-03-2012 16:44




 
Переход