Como muchos ya han de saber, un porcentaje mayor de los virus entran a tu computadora aparte de Internet, también por memoria infectadas y mas cuando tienes bastantes computadoras y el control a veces no es del todo total.
hay un dicho que me gusta mucho, las memorias son como el sexo, es decir la memoria solo metela en una sola maquina, si la metes en mas de una, hay muchas probabilidades que se te infecte...
Este proyecto se genero en delphi 7 y funciona también con embarcadero 2010; este proyecto solo afecta a las memorias USB, puedes conectar cualquier otro dispositivo como impresoras, scaner y no se vera afectado.
al momento de que tu insertas una memoria al puerto usb, este automáticamente busca en los driver en los archivos:
usbstor.inf
sbstor.PNF
https://cxs2fw.blu.livefilestore.com/y1pIprjzVVtBofGdtr-71lCFUGWmS7grGs588E_5E7fsU4L1scOcMP8d7Xx_nC-ykXoygyVoGW6xzf_mTNUY6zJWMuye7XkWyQy/usbstor.bmp?psid=1
al no encontrar estos archivos los drivers de cualquier memoria que se inserte no se instalara los drivers.
por otro lado si la memoria ya había sido insertada con anterioridad estos archivos ya no son útiles ya que los drivers ya están instalados y tendríamos que recurrir al registro para bloquearlo.
"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTORStart"
3 = Habilitado
4 = DesHabilitado
ahora que mas o menos sabemos como funciona el bloqueo del usb, veamos le código del mismo
las librerías que utilizaremos serian las siguientes:
Registry,ShellAPI
{el primer proceso que tendremos seria el de cambiar el nombre de los archivos, para cuando queramos habilitar la opción de instalar de nuevo una memoria usb regresemos los archivos a su nombre original y listo
usbstor.inf
sbstor.PNF}
Procedure Tusbs.MadrearArchivo(Sender: TObject);
Var
lpFileOp: TSHFileOpStruct;
ArchivoABuscar1,ArchivoABuscar2:String;
Begin
ArchivoABuscar1:='C:WINDOWSinfusbstor.inf';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Self.Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.inf' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorinf.Txt' + #0#0);
lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY;
lpFileOp.fAnyOperationsAborted := FALSE;
lpFileOp.hNameMappings := nil;
lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0);
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.inf a usbstorinf.Txt');
End;
ArchivoABuscar2:='C:WINDOWSinfusbstor.PNF';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.PNF' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorPNF.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.PNF a usbstorPNF.Txt');
End;
End;
recuerda que hay que crear tus procedimientos para regresar los archivos a la normalidad, ya que estos procedimientos cambian el archivo a un txt,
una vez hecho esto entonces creamos el procedimiento para habilitar o deshabilitar el puertos usb del registro:
Procedure EnableUSB(Value: Boolean);
begin
With TRegistry.Create do
Try
RootKey:= HKEY_LOCAL_MACHINE;
If OpenKey('SYSTEMCurrentControlSetServicesUSBSTOR',TRUE) then
begin
if Value then
WriteInteger('Start',3)
Else
WriteInteger('Start',4);
CloseKey;
end;
finally
Free;
end;
end;
para mandarlos llamar solo:
EnableUSB(False);
MadrearArchivo(Sender);
y bueno aunque faltan otros detalles, como iconizarlo, y que corra siempre cuando inicie windows, por el momento es el proposito de este post,
hay un dicho que me gusta mucho, las memorias son como el sexo, es decir la memoria solo metela en una sola maquina, si la metes en mas de una, hay muchas probabilidades que se te infecte...
Este proyecto se genero en delphi 7 y funciona también con embarcadero 2010; este proyecto solo afecta a las memorias USB, puedes conectar cualquier otro dispositivo como impresoras, scaner y no se vera afectado.
al momento de que tu insertas una memoria al puerto usb, este automáticamente busca en los driver en los archivos:
usbstor.inf
sbstor.PNF
https://cxs2fw.blu.livefilestore.com/y1pIprjzVVtBofGdtr-71lCFUGWmS7grGs588E_5E7fsU4L1scOcMP8d7Xx_nC-ykXoygyVoGW6xzf_mTNUY6zJWMuye7XkWyQy/usbstor.bmp?psid=1
al no encontrar estos archivos los drivers de cualquier memoria que se inserte no se instalara los drivers.
por otro lado si la memoria ya había sido insertada con anterioridad estos archivos ya no son útiles ya que los drivers ya están instalados y tendríamos que recurrir al registro para bloquearlo.
"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTORStart"
3 = Habilitado
4 = DesHabilitado
ahora que mas o menos sabemos como funciona el bloqueo del usb, veamos le código del mismo
las librerías que utilizaremos serian las siguientes:
Registry,ShellAPI
{el primer proceso que tendremos seria el de cambiar el nombre de los archivos, para cuando queramos habilitar la opción de instalar de nuevo una memoria usb regresemos los archivos a su nombre original y listo
usbstor.inf
sbstor.PNF}
Procedure Tusbs.MadrearArchivo(Sender: TObject);
Var
lpFileOp: TSHFileOpStruct;
ArchivoABuscar1,ArchivoABuscar2:String;
Begin
ArchivoABuscar1:='C:WINDOWSinfusbstor.inf';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Self.Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.inf' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorinf.Txt' + #0#0);
lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY;
lpFileOp.fAnyOperationsAborted := FALSE;
lpFileOp.hNameMappings := nil;
lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0);
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.inf a usbstorinf.Txt');
End;
ArchivoABuscar2:='C:WINDOWSinfusbstor.PNF';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.PNF' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorPNF.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.PNF a usbstorPNF.Txt');
End;
End;
recuerda que hay que crear tus procedimientos para regresar los archivos a la normalidad, ya que estos procedimientos cambian el archivo a un txt,
una vez hecho esto entonces creamos el procedimiento para habilitar o deshabilitar el puertos usb del registro:
Procedure EnableUSB(Value: Boolean);
begin
With TRegistry.Create do
Try
RootKey:= HKEY_LOCAL_MACHINE;
If OpenKey('SYSTEMCurrentControlSetServicesUSBSTOR',TRUE) then
begin
if Value then
WriteInteger('Start',3)
Else
WriteInteger('Start',4);
CloseKey;
end;
finally
Free;
end;
end;
para mandarlos llamar solo:
EnableUSB(False);
MadrearArchivo(Sender);
y bueno aunque faltan otros detalles, como iconizarlo, y que corra siempre cuando inicie windows, por el momento es el proposito de este post,