Вверх ↑
Этот топик читают: Гость
Ответов: 267
Рейтинг: 1
#1: 2026-03-25 16:19:31 ЛС | профиль | цитата
Здравствуйте. Как всегда нестандартный вопрос от меня:
есть системный блок, он находится в металлическом коробе, и выведен лишь 1 USB разъем, предназначенный для сохранения коротких текстовых файлов.
Мне нужно защитить этот разъем от подключения всяких HID устройств и USB-хабов. Нужно сделать так чтобы можно было подключить только съемные носители (флешки).
Может есть идеи, как это можно реализовать?
карма: 1

0
Ответов: 267
Рейтинг: 1
#2: 2026-03-26 17:47:41 ЛС | профиль | цитата
Есть Ардуино и реле... может есть у кого идея как разорвать +5в, при подключении не того чего нужно..?
карма: 1

0
Ответов: 8993
Рейтинг: 825
#3: 2026-03-26 18:28:09 ЛС | профиль | цитата
Gitarist, проще железный "пояс верности" склепать, на замок закрыть, а ключик носить в своём кармане
Хотя средневекОвых рыцарей жёны умудрялись обманывать и в таких условиях
карма: 19

0
Ответов: 267
Рейтинг: 1
#4: 2026-03-27 05:32:39 ЛС | профиль | цитата
Всю ночь мучил нейронку, кое что получилось через powershell, но не совсем то...
Вот что хотелось бы от вас:
Схемку мониторинга usb в системе. Когда подключается Mass Storage device (флешка) то в поток выдать "Y", иначе (любые другие устройства) выдать - "N".
карма: 1

0
Ответов: 1087
Рейтинг: 223
#5: 2026-03-28 11:29:56 ЛС | профиль | цитата
Gitarist,
  1. Схема выдаёт все подключаемые устройства в порт USB

Add(MainForm,2953706,77,105)
{
Point(onClose)
link(onCreate,9196942:doString,[])
link(onClose,9170472:doConsoleTerminate,[])
}
Add(FormatStr,9196942,126,119)
{
Mask="$query = """SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBControllerDevice'"""\r\n\r\nRegister-CimIndicationEvent -Query $query -SourceIdentifier 'USBArrival' -Action {$instance = $EventArgs.NewEvent.TargetInstance;Write-Host $($instance.Dependent)} | Out-Null\r\n\r\nwhile ($true) { Start-Sleep 1 }"
link(onFString,9170472:doConsoleExec,[])
}
Add(WinExec,9170472,182,105)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(doConsoleTerminate)
link(onConsoleResult,2020972:doWork2,[])
link(onConsoleError,2020972:doWork3,[(235,132)])
}
Add(Memo,1346352,357,119)
{
Left=75
Top=45
Width=280
Height=200
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(HubEx,2020972,231,119)
{
link(onEvent,12632313:doCharset,[])
}
Add(Charset,12632313,259,119)
{
link(onCharset,7052637:doReplace,[])
}
Add(Replace,7052637,308,119)
{
SubStr="\n"
DestStr="\r\n"
link(onReplace,1346352:doAdd,[])
}

  2. Схема выдаёт только HID устройства (клавиатура, мышь и т.д.) подключаемые к порт USB

Add(MainForm,2929814,126,105)
{
Point(onClose)
link(onCreate,9196942:doString,[])
link(onClose,9170472:doConsoleTerminate,[])
}
Add(FormatStr,9196942,175,119)
{
Mask="$query = @' \r\nSELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_PnPEntity' AND (TargetInstance.PNPClass = 'Keyboard' OR TargetInstance.PNPClass = 'HIDClass' OR TargetInstance.PNPClass = 'Mouse')\r\n'@\r\nRegister-CimIndicationEvent -Query $query -SourceIdentifier 'HID_Arrival' -Action {\r\n $instance = $EventArgs.NewEvent.TargetInstance\r\n $time = Get-Date -Format 'HH:mm:ss'\r\n \r\n Write-Host """[$time] Обнаружено устройство!"""\r\n Write-Host """ Тип: $($instance.PNPClass)"""\r\n Write-Host """ Имя: $($instance.Caption)"""\r\n Write-Host """ ID: $($instance.DeviceID)"""\r\n Write-Host """---------------------------"""\r\n} | Out-Null\r\n\r\nwhile ($true) { Start-Sleep 1 }"
link(onFString,9170472:doConsoleExec,[])
}
Add(WinExec,9170472,231,105)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(doConsoleTerminate)
link(onConsoleResult,2020972:doWork2,[])
link(onConsoleError,2020972:doWork3,[(284,132)])
}
Add(Memo,1346352,406,119)
{
Left=75
Top=45
Width=280
Height=200
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(HubEx,2020972,280,119)
{
link(onEvent,12632313:doCharset,[])
}
Add(Charset,12632313,308,119)
{
link(onCharset,7052637:doReplace,[])
}
Add(Replace,7052637,357,119)
{
SubStr="\n"
DestStr="\r\n"
link(onReplace,1346352:doAdd,[])
}

  3. Выдаёт "Y" при подключении Mass Storage device и "N" при подключении всех остальных устройств.

Add(MainForm,2929814,231,105)
{
Point(onClose)
link(onCreate,9196942:doString,[])
link(onClose,9170472:doConsoleTerminate,[])
}
Add(FormatStr,9196942,280,119)
{
Mask="$query = 'SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2'\r\n\r\n$action = {\r\n $usbDrives = Get-CimInstance Win32_PnPEntity | Where-Object { $_.Service -eq 'USBSTOR' }\r\n\r\n if ($usbDrives) {\r\n Write-Host 'Y'\r\n } else {\r\n Write-Host 'N'\r\n }\r\n}\r\n\r\nGet-EventSubscriber -SourceIdentifier 'USBMonitor' -ErrorAction SilentlyContinue | Unregister-Event\r\nRegister-WmiEvent -Query $query -SourceIdentifier 'USBMonitor' -Action $action | Out-Null\r\nwhile($true) { Start-Sleep -Seconds 1 }\r\n"
link(onFString,9170472:doConsoleExec,[])
}
Add(WinExec,9170472,336,105)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(doConsoleTerminate)
link(onConsoleResult,2020972:doWork2,[])
link(onConsoleError,2020972:doWork3,[(389,132)])
}
Add(Memo,1346352,511,119)
{
Left=75
Top=45
Width=280
Height=200
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(HubEx,2020972,385,119)
{
link(onEvent,12632313:doCharset,[])
}
Add(Charset,12632313,413,119)
{
link(onCharset,7052637:doReplace,[])
}
Add(Replace,7052637,462,119)
{
SubStr="\n"
DestStr="\r\n"
link(onReplace,1346352:doAdd,[])
}


P.S. Выкладывать на форум схему, которая может заблокировать клавиатуру и мышь у пользователя, это такое себе…
карма: 20

0
Ответов: 8993
Рейтинг: 825
#6: 2026-03-28 18:29:30 ЛС | профиль | цитата
Gitarist писал(а):
может заблокировать клавиатуру
Вот именно из-за этого в начальные годы HiAsm многие недоантивирусы скопом включили "made in HiAsm" в блокировку
Кстати: использовал внешнюю звуковую карту USB (в виде флешки), у ней была собственная память, которая иденцифицировалась как диск, очень удобно для размещения и своей программки, в т. ч. использующей эту звуковую карту. Вот попадётся такая флешка коллеге, и компютер её пропустит

Редактировалось 1 раз(а), последний 2026-03-28 18:31:41
карма: 19

0
Ответов: 267
Рейтинг: 1
#7: 2026-03-29 01:56:30 ЛС | профиль | цитата
Gunta писал(а):
3. Выдаёт "Y" при подключении Mass Storage device и "N" при подключении всех остальных устройств.

Огромнейшее спасибо за труд, Gunta! Последняя схема - то что надо. Теперь я могу послать в Ардуину сигнал на разрыв 5в.
А то с этими нейронками дошло до того с экспериментами, что у меня повырубались все USB. и никак не включить, даже до запуска винды (окно выбора операционки) ничего не сделать было))) пришлось искать ps\2 клаву и мышь, чтобы все исправить обратно. ))))) Вот решил все таки рвать провод +5в. Так безопаснее наверно)).
Один вопрос: почему схема кидает несколько "N"? Как можно отправить одну? пробовал через память-таймер, но почему то не получается. Это не критично, я могу поправить все на int (1,0). Просто интересно почему так...

Леонид, перестаньте... то, что мне за пару часов экспериментов склепали эти чёртовы нейросети на powershell, могут положить любой компьютер и тут hiasm рядом не стоял))) Свернул я не туда когда задал ей вопрос: "а может ну его это реле, давай будем напрямую отключать это устройство в системе?" . Она ответила - "Не вопрос!, на тебе код" и ппц, рубанула мне все usb и не добраться до них)) приключений на весь день и вечер...))) Ахах , ну ничего, всё опыт.)

Редактировалось 1 раз(а), последний 2026-03-29 02:14:06
карма: 1

0
Ответов: 1087
Рейтинг: 223
#8: 2026-03-29 06:08:40 ЛС | профиль | цитата
Gitarist писал(а):
почему схема кидает несколько "N"? Как можно отправить одну? пробовал через память-таймер, но почему то не получается.

Запусти вторую схему, отключи и подключи мышь. Увидишь сколько там HID устройств задействовано.


Мне кажется можно сделать проще и надёжнее.
Если текст, который нужно передать пользователю, небольшой то его можно закодировать в QR-коде и пускай пользователь его читает телефоном с экрана. Если текст большой, то кодировать ссылку на этот файл предварительно сохранив его на каком-либо файл-сервере.

Редактировалось 2 раз(а), последний 2026-03-29 06:14:09
карма: 20

0
Ответов: 8993
Рейтинг: 825
#9: 2026-03-31 20:16:55 ЛС | профиль | цитата
Gunta, с вашего разрешения передам программку коллеге? (Он приобрёл дочери игрушку (китайскую) от US< и не знает работает или нет, инструкции тоже нет.)
карма: 19

0
Ответов: 1087
Рейтинг: 223
#10: 2026-04-01 15:05:08 ЛС | профиль | цитата
Леонид писал(а):
с вашего разрешения передам программку коллеге?

Не вопрос.. Конечно. Для того и выкладывается в публичный доступ.
карма: 20

1
Голосовали:Леонид
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)