Como bloquear pendrive definitivamente

20 de agosto de 2010 | Em: Utilidades, Windows

Recentemente, fiz um post aqui citando um programa para fazer o bloqueio/desbloqueio de pendrives. Este post você pode conferir aqui: http://ricardomartins.com.br/2010/08/15/como-bloquear-pendrive/

Hoje descobri que este programa tem um problema que é o seguinte: Ele só funciona, fazendo o bloqueio do pendrive[bb], caso o pendrive já tenha sido plugado na máquina antes. Caso seja um pendrive novo, ele não funciona.

Isso mesmo! Se você pegar um pendrive que nunca tenha sido ligado namáquina[bb] onde tenha utilizado o software[bb]para bloquear, ele é reconhecido normalmente.

O que ocorre é que ao clicar em “Lock” no software, ele altera o valor da seguinte chave no registro:  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start. No caso, muda o valor de 3 para 4 de modo a bloquear. Mas ao plugar um pendrive que ainda não tenha sido utilizado na máquina em questão, o Windows volta o valor da chave para 3, deixando desbloqueado.

Isso porque ao conectar um pendrive, ele é detectado pelo arquivo C:\Windows\system32\DRIVERS\USBSTOR.SYS e caso ele já “conheça” esse pendrive, ele mantém o valor da chave como está. Caso ele não conheça, ele altera o valor da chave no registro para 3, para poder instalar o driver do pendrive.

Assim acaba desfazendo a modificação feita pelo software. Por esta razão, o ideal continuava sendo o método tradicional ( já postado aqui também – http://ricardomartins.com.br/2009/04/10/bloqueando-pendrives-no-windows-facil-facil/), que consiste em negar permissões nos arquivos usbstor.inf, usbstor.pnf e usbstor.sys e alterar a chave do registro citada acima.

Para resolver este problema e facilitar a minha vida, hoje eu fiz um script em vbs, que muda o valor da chave do registro, e altera as permissões dos arquivos. Assim, ao invés de ter que ir em cada arquivo e mecher nas permissões, o script faz tudo pra mim.

Eu fiz dois scripts, um para bloquear e outro para desbloquear. Eu poderia criar um script, que perguntasse o que fazer, no caso, bloquear ou desbloquear, e ele executar as ações necessárias de acordo com a resposta. No entanto como não sou nenhum expert em programação vbs, este já está muito bom para a minha necessidade.

Abaixo o código. Basta copiar e colar no notepad e salvar como “Bloqueia.vbs” e “Desbloqueia.vbs”

É um script simples, onde utilizo o cacls para alterar as permissões. Para quem não conhece, o cacls é um comando nativo do Windows, para mudar permissões de arquivos via console.

Você também poderá notar que eu configurei para mudar as permissões para os usuários TODOS e EVERYONE. Isto não é uma redundância desnecessária. É que assim não tenho problemas com o idioma do SO. Caso seja pt_br, irá funcionar pelo TODOS, caso contrário, pelo EVERYONE.

Abaixo o código do “Bloqueia.vbs”:


'Script para Bloquear Pendrive - Ricardo Macedo Martins
'Inicio do script
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR\Start",4,"REG_DWORD"
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P EVERYONE:N", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P TODOS:N", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P SYSTEM:N", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P EVERYONE:N", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P TODOS:N", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P SYSTEM:N", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P EVERYONE:N", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P TODOS:N", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P SYSTEM:N", 0 , True
MsgBox "Pendrive Bloqueado!",0,"Informacao"
'Fim do script

Abaixo o código do “Desbloqueia.vbs”:


'Script para Bloquear Pendrive - Ricardo Macedo Martins
'Inicio do script
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR\Start",3,"REG_DWORD"
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P EVERYONE:F", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P TODOS:F", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.inf /E /P SYSTEM:F", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P EVERYONE:F", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P TODOS:F", 0 , True
WshShell.Run "cacls c:\windows\inf\Usbstor.pnf /E /P SYSTEM:F", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P EVERYONE:F", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P TODOS:F", 0 , True
WshShell.Run "cacls C:\Windows\system32\drivers\usbstor.sys /E /P SYSTEM:F", 0 , True
MsgBox "Pendrive Desbloqueado!",0,"Informacao"
'Fim do script

Se você preferir, eu coloquei os scripts disponíveis para download. Clique aqui para baixar.

Até a próxima!



3 Respostas to Como bloquear pendrive definitivamente

Avatar

kaka

14 de fevereiro de 2011 at 6:15 pm

parabéns valw tava precisando continue asim amigo, me serviu muito

Avatar

Thiago Aquino Gomes

12 de maio de 2011 at 9:27 am

Bom dia. Dessa forma todos os dispositivos usb são bloqueados?

Avatar

Madu

3 de fevereiro de 2012 at 6:52 pm

Este procedimento de negar os arquivos usbstor.inf, usbstor.pif e usbstor.sys são reversíveis? Já houve casos que neguei a permissão a todos e quando tentei reverter para permitir (usando usuário administrador), as permissões não voltaram ao normal.

Grato!
Madu

Formulário de Contato

Categorias

Páginas

Últimos tweets