将 U 盘或设备插入计算机时,始终存在设备是恶意的风险,将充当 HID 并可能对计算机造成一些损害。我怎样才能防止这个问题?在特定 USB 端口上禁用 HID 是否足够?我怎么做?
我有一个被测设备 (DUT),我使用Power Analyzer Datalogger使用来自/dev/ttyUSB0
.
问题是 DUT 现在远离我用来收集数据的工作站,但在同一个网络中,我需要使用第二台 PC,它通过 USB 直接连接到电源分析仪,作为一种 USB 代理和 ssh在“代理”机器的 USB 的测量机器上创建一种符号链接。
鉴于上述图如何可以在1日PC访问/dev/ttyUSB0
的2次PC直接连接,在一种方式中的程序读出从1流ST PC不会注意到的差异?
在我们的 Linux 机器中,我们有 USB -> 串行设备,它始终标识为
/dev/ttyACM0
. 所以我写了一个应用程序,直到昨天,一切正常。但是突然(是的,在远程演示期间......)设备停止工作。经过快速研究,我发现连接更改为/dev/ttyACM1
. 这有点不合时宜,但现在我遇到了一个问题 - 如何明确识别我的设备?例如,尽管 UUID/dev/sd**
已更改,但可以使用 UUID 初始化存储驱动器。有没有办法为串行设备做到这一点?
现在我使用了一个愚蠢的解决方法:
for(int i = 0; i < 10; i ++)
{
m_port = std::string("/dev/ttyACM") + (char)('0' + i);
m_fd = open(m_port.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
}
Run Code Online (Sandbox Code Playgroud)
我们使用的设备的链接。
我必须从命令中hcitool dev
只提取蓝牙加密狗的 MAC 地址。
的输出hcitool dev
是:
Devices:
hci0 xx:xx:xx:xx:xx:xx
Run Code Online (Sandbox Code Playgroud)
我将此输出写入文件并尝试使用以下内容获取信息awk
:
hcitool dev > /home/pi/mario/BT.txt
awk ' { print $2 } ' /home/pi/mario/BT.txt
Run Code Online (Sandbox Code Playgroud)
输出还包含第一行,它是一个空单元格:
xx:xx:xx:xx:xx:xx
我怎样才能推迟第一个细胞?
有时,当我将系统设置为睡眠状态(挂起到 RAM)然后恢复时,将不再找到蓝牙适配器。如果我重新启动,它会再次工作。
这是(内部)蓝牙适配器,如下所示lsusb
:
# lsusb | grep 8087
Bus 001 Device 006: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Run Code Online (Sandbox Code Playgroud)
我能够扫描、连接和使用我的蓝牙设备。
lsusb
不再显示上述设备,并kern.log
说:
usb usb1-port10: Cannot enable. Maybe the USB cable is bad?
usb usb1-port10: Cannot enable. Maybe the USB cable is bad?
usb usb1-port10: attempt power cycle
usb 1-10: new low-speed USB device number 71 using …
Run Code Online (Sandbox Code Playgroud) 我们购买了一个商业应用程序,只有当他们的加密狗 USB 连接到服务器时才能工作。然而,有时应用程序无法识别加密狗,所以它不起作用,但如果有人从 USB 端口物理弹出加密狗并再次连接它,它将识别并正常工作。
服务器上加载了 43 个模块,连接/弹出加密狗不会增加/减少模块数量。
另外我在/dev 之前/之后有usbmon0,usbmon1和usbmon2文件弹出/附加加密狗和/dev 中的文件数之前不会改变/弹出后/附加适配器。
弹出加密狗后journalctl -f命令:
Jan 19 18:10:28 iwr kernel: usb 2-2.1: USB disconnect, device number 5
Run Code Online (Sandbox Code Playgroud)
连接加密狗后journalctl -f命令:
Jan 19 18:11:11 iwr kernel: usb 2-2.1: new full-speed USB device number 6 using uhci_hcd
Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device found, idVendor=0403, idProduct=c580
Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device strings: …
Run Code Online (Sandbox Code Playgroud) 我有一个随机扬声器,我想为其开发一个驱动程序,以便我可以向dev
文件系统报告统计数据、电池等。但是,我很难找到扬声器的供应商和设备 ID 以便将其与驱动程序正确关联。
我什至不知道制造商是谁,我的 Linux 机器没有检测到它(lsusb
和其他实用程序),T&G 有一个扬声器,看起来和我的一模一样,但我的有一个不同的徽标(橙色花),而不是T&G 就是其中之一。
每个设备都有与其关联的供应商和产品 ID 吗?
如果是这样,如果您不知道您的设备并且您的机器无法识别它,您如何找到它?
是否甚至可以通过扬声器的 USB 端口向我的机器报告电池和其他统计数据,我相信该端口应该与 USB 卡一起使用?
我正在使用带有运行 linux 的嵌入式设备的 USB。问题是,在某些情况下,当我通过给出umount /media/sda1
卸载成功的命令来卸载USB 时,但是当我继续移除 USB 时,我收到一条错误消息,提示无法将 fs 标记为脏,当我将其重新插入时,出现错误 Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
在 linux 终端上还有其他命令可以用来安全弹出 USB 吗?以便在我拔下 USB 设备之前关闭它。
更新:我尝试使用同步,但错误仍然存在,如下所示:
root@(none):~# sync
root@(none):~# umount /media/sda1
root@(none):~# ls /media/sda1
root@(none):~# [ 296.021241] usb 2-1: USB disconnect, device number 3
[ 296.026879] sd 1:0:0:0: [sda] Synchronizing SCSI cache
[ 296.031175] sd 1:0:0:0: [sda]
[ 296.033743] Result: hostbyte=0x01 driverbyte=0x00
[ 296.048283] FAT-fs (sda1): unable to read boot sector to mark …
Run Code Online (Sandbox Code Playgroud) 我试图xinput
在连接 USB 输入设备时设置其属性。我见过需要脚本在后台运行并轮询 USB 设备的解决方案,但我想找到一种触发方法,而不是涉及用户空间轮询的方法。
我尝试创建一个在设备连接上运行脚本的规则,但触发规则时udev
,连接的设备似乎尚不可见。这似乎是事件的恒定顺序,而不是竞争条件,因为向脚本添加命令也会延迟设备在 中列出。xinput
udev
add
sleep
xinput list
有没有可靠的方法来设置xinput
设备连接时的属性?
参考:下面的问题 驱动器名称?“/dev/sda”的“sda”部分的正确术语是什么?
鉴于:
我想要做什么:我希望能够以编程方式(如果可能的话,在 shell 脚本中)启动它的设备类型,并根据启动设备更改某些特征。
简单的例子:
Boot device = "mmxxxxx"
Print "Booted from SD card!"
Boot device = "sda"
Print "Booted from Attached Storage!"
Run Code Online (Sandbox Code Playgroud)
我想要做的是提取(为了需要一个更好的术语)根分区派生的主要设备类型(即“ sd”、“mm”或其他任何内容,具体取决于作为根安装的设备分割。)
我怀疑我可以以某种方式列出安装在 root 上的设备,而不列出 中的所有内容mount
,然后提取最后一个斜杠后的前两个字母。。。
usb-device ×10
linux ×6
usb ×3
bluetooth ×2
block-device ×1
drivers ×1
hardware ×1
hid ×1
linux-kernel ×1
mac-address ×1
security ×1
streams ×1
ttyusb ×1
udev ×1
xinput ×1