IT老鸟,信息安全硕士。
分类: IT职场
2011-06-07 12:59:27
今天又面了一家,问我能不能禁用端口,问我能否在加载OS前拦截,输入密码正确后再加载操作系统(这个问题后面再说)。我估计他说的不是网络端口,就问他是不是网络的端口,BOSS指了指电脑。我明白了是USB的。正好昨天看了一下注册表的东西。我说这个理论上是没有问题的。改注册表就可以。不过我没有编过,可以尝试一下。
折腾注册表还是用VB,VC#容易。这个java还要用什么驱动。太复杂了。
刚才装上VS2005。百度后。发现把HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR下面的Start的3改成4就OK。现场手动修改了一下。没有问题。改成3,4确实能看是否打开关闭USB的存储功能。对USB接口的鼠标无压力。
好,百度vb程序。太复杂了。又百度C#程序。找到结果。
于是编码如下
Code:
1. ...省略该加载的
2. using Microsoft.Win32;
3.
4. 。。。。省略该省略的。。。
5. //禁用u盘的代码
6. private void button1_Click(object sender, EventArgs e)
7. {
8. RegistryKey hkml = Registry.LocalMachine;
9. RegistryKey USBSTOR = hkml.OpenSubKey("system//CurrentControlSet//Services//USBSTOR", true);
10. USBSTOR.SetValue("Start","4");//注意这里的4
11. }
12. 。。。。省略剩下的。
编译,报错,说object什么void类型。一看范例,是用“”我也就改成了双引号,再编译,成功
运行一下。没有问题。成功禁用掉。
现在再改回来,我继续手动改。我改,我改,改不会来了 。重启。问题依旧。
打开注册表。之前Start的值是reg_dword而程序运行完了之后变成了reg_sz,于是上网百度修复。
重写整个USBSTOR值
保存为1.reg
Code: 1.
Windows Registry Editor Version 5.00
2.
3.
4.
5.
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR]
6.
"Type"=dword:00000001
7.
"Start"=dword:00000003
8.
"ErrorControl"=dword:00000001
9.
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,/
10. 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,55,00,53,00,42,00,53,00,54,00,4f,/
11. 00,52,00,2e,00,53,00,59,00,53,00,00,00
12. "DisplayName"="USB 大容量存储设备" 13. 14. [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR/Security]
15. "Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,/
16. 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,/
17. 00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,/
18. 05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,/
19. 20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,/
20. 00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,/
21. 00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
22. 问题解决。太恐怖了。没事不要动注册表,第二这个又重新看了set的所有方法,我暂时没办法sz改成dword。 用RegistryKey类还不如提前写好reg文件,直接调用呢。 能否在加载OS前拦截这个也可以。在加载OS的时候相应的地方插入一段代码就可以了。有意思的需求。