Como bloquear pendrive definitivamente

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!

1 Response to “Como bloquear pendrive definitivamente”


  1. 1 kaka fevereiro 14, 2011 às 6:15 pm

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


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Visitantes

  • 240,979 Acessos

%d blogueiros gostam disto: