filnspect [VBS]

Iniciado por Novlucker, 5 Mayo 2009, 18:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Novlucker

Buenas ...

Bueno, hace un tiempo y tras una consulta en el sub de seguridad se me ocurrió crear un pequeño script para consultar de manera automática sobre el origen de determinados archivos/librerías, para lo cual hacía uso de la web :http://www.fileinspect.com/, la cual esta en beta para ya muestra tener una buena bbdd :P

El caso es que en ese momento el script fue resultado de algunos minutos de aburrimiento, pero luego de analizarlo un poco más detenidamente me pareció que me podía resultar útil, así que lo he ido modificando en mi beneficio :D y lo comparto a continuación :P

Código (vb) [Seleccionar]
'by Novlucker
Set objxmlHTTP = CreateObject("Microsoft.XMLHTTP")
Set objfso = Createobject("Scripting.filesystemobject")

If wscript.arguments.count <> 2 then
Ayuda()
End if

Format = Ucase(wscript.arguments(0))

Select case Format
case "/F"
Set FromFolder = objfso.getfolder(wscript.arguments(1))
Set FileList = FromFolder.files
If FileList.count = 0 then
Msgbox "La carpeta seleccionada no contiene ningún archivo", 64, "Informe"
wscript.quit
End if
case "/A"
If objfso.fileexists(wscript.arguments(1)) then
Set FromFile = objfso.opentextfile(wscript.arguments(1),1)
FileList = Split(FromFile.readall,vbnewline)
FromFile.close
Else
Msgbox "El archivo seleccionado no existe", 16, "Informe"
wscript.quit
End if
case "/L"
FileList = Split(wscript.arguments(1),",")
case "/P"
Set Taskmgr = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_Process")
Dim Taskname(): Redim Preserve Taskname(Taskmgr.count-1)
For Each T in Taskmgr
Taskname(n) = T.name
n = n+1
Next
FileList = FilterAray(Taskname)
case else
Ayuda()
End Select

For Each F in FileList

If Format = "/F" then
URLF = "http://www.fileinspect.com/fileinfo/" & LCase(Replace(F.name,".","-"))
F = F.name
Else
URLF = "http://www.fileinspect.com/fileinfo/" & LCase(Replace(F,".","-"))
End if

objxmlHTTP.open "GET", URLF, 0
objxmlHTTP.send()
Do while objxmlHTTP.readystate <> 4
wscript.sleep 200
Loop
response = objxmlHTTP.responsetext

blogcopy = instr(1,response,"id=""blog-copy-text""",1)

If blogcopy > 0 then
Startd = instr(blogcopy, response,">",1)+1
Endd = instr(Startd, response,"<",1)

Definition = mid(Response,Startd,Endd-Startd)
Definition = replace(Definition,"&lt;", "<")
Definition = replace(Definition,"&gt;", ">")
Definition = replace(Definition,"&quot;", """")

wscript.echo Definition
Else
wscript.echo "</p><table cellpadding=""0"" cellspacing=""0"" width=""100%"" bgcolor=#737CA1><tr><td><a style=""color:#000000;font-size:15px;color=white;text-decoration:none;font-family:Arial;border:0px;""<b>" & F & ": Archivo desconocido</b></a></td></tr></table>"
End if

Next

Function FilterAray(Aray)
dim auxAray()
For Each A in Aray
Match = False
On error resume next
Newlength = ubound(auxAray) + 1
If err.number > 0 then
Redim Preserve auxAray(0)
auxAray(0) = A
err.clear
On error goto 0
End if
For Each E in auxAray
If A = E then
Match = True
Exit For
End if
Next
If Match = False then
Redim Preserve auxAray(Newlength)
auxAray(Newlength) = A
End if
Next
FilterAray = auxAray
End Function

Sub ayuda()
wscript.echo vbnewline & "Uso: cscript.exe/nologo " & wscript.scriptname & " [formato] [parametro]" & vbnewline & _
vbnewline & chr(9) & "Formato" & chr(9) & "Parametro" & vbnewline & chr(9) & "/F" & chr(9) & "Ruta Carpeta" & vbnewline & _
chr(9) & "/A" & chr(9) & "Ruta Archivo (Conteniendo listado)" & vbnewline & chr(9) & "/L" & chr(9) & "Lista de archivos separados por coma" & vbnewline & _
chr(9) & "/P" & chr(9) & "Análisis de procesos en ejecución (Cualquier valor)" & vbnewline & vbnewline & "Ejemplos:" & vbnewline & chr(9) & "cscript.exe/nologo " & _
wscript.scriptname & " /F" & " C:\WINDOWS" & vbnewline & chr(9) & "cscript.exe/nologo " & wscript.scriptname & " /A" & _
" C:\Archivos.txt" & vbnewline & chr(9) & "cscript.exe/nologo " & wscript.scriptname & " /L" & " ""mstsc.exe,syskey.exe,appmgr.dll""" & _
vbnewline & chr(9) & "cscript.exe/nologo " & wscript.scriptname & " /P -"
wscript.quit
End Sub


El script debe de lanzarse desde línea de comandos pasando los parámetros correspondientes, los cuales pueden verse en la ayuda (tanto desde ms-dos como con doble click)

Ej:
Código (dos) [Seleccionar]
C:\Documents and Settings\Novlucker\Escritorio>cscript//nologo "filnspect.vbs" > Reporte.html

Como se ve además hay que redireccionar la salida (>) a un archivo de extensión html

Así se ve el resultado:

Saludos ;D

Post original: Error de permisos al modificar msconfig

Edito
:La web bajo la cual se realizaban las consultas, ha cambiado MUCHO la manera en la que se visualizan los archivos, por lo que ha dejado de ser funcional  :-\
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

aaronduran2

Como te tienen dicho en otros posts, deberías hacer una recopilación de todos tus códigos, son buenísimos  :)

Novlucker

Gracias  ;D

Estoy viendo que otras opciones más le puedo agregar que pueda resultar útil  :P (al menos a mi XD)

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

EddyW

CitarDefinition = replace(Definition,""", """")
Esa linea me fue mal es la linea 59 despues lo edite y le aunmente una comilla que creo que faltaba y recien funciono..asi:
CitarDefinition = replace(Definition,"""", """")
Creo que faltaba no se, pero asi recien me funciono..
bueno lo demas esta muy bien me funciona perfecto..  :)
SaluDOS!!!

Novlucker

#4
Ju  :-X, estas seguro de haber copiado mi code? porque si te fijas, la línea 59 no tiene eso, sino que tiene Definition = replace(Definition,"&quot;", """"), es más, lo que comentas no esta en ningún sitio  :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

EddyW

Cita de: Novlucker en  6 Mayo 2009, 17:52 PM
Ju :-X, estas seguro de haber copiado mi code? porque si te fijas, la línea 59 tiene eso, sino que tiene Definition = replace(Definition,""", """"), es más, lo que comentas no esta en ningún sitio :xD

Saludos
Si acabo de darme cuenta, creo que hay algunos errores en esto, copie el code y lo pege en el Block de notas pero lo pego todo en una linea..
luego puse citar en tu post y lo copie de ahi por esa razon salio asi..
no se si sera solo ami pero al copiar el code asi y pegarlo lo pega en una sola linea todo sin salto de linea, pero igual ya lo puse correctamente y funciona bien..
SaluDOS!!!

Novlucker

A que adivino que navegador utilizas? IExplorer:rolleyes:

En iexplorer ocurre eso cuando copias un code, en Firefox no ocurre  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

EddyW

Cita de: Novlucker en  6 Mayo 2009, 18:02 PM
A que adivino que navegador utilizas? IExplorer? :rolleyes:

En iexplorer ocurre eso cuando copias un code, en Firefox no ocurre :P

Saludos
Por desgracia si estoy usando IExplorer, no estoy en mi PC, en la mia uso Google Crome es mucho mas liviano y rapido y no sucede esto como en esta cosa..
SaluDOS!!!

Novlucker

#8
Simplemente comentar que como dije antes, estaba viendo que más le podía agregar al script, por lo que he añadido el parámetro "/P", el cual toma como input los procesos ejecutandose en la PC  :D , para lo cual entre otras cosas he debido de agregar una función para filtrar valores repetidos en la "colección"

Código (dos) [Seleccionar]
C:\Documents and Settings\Novlucker\Escritorio>cscript/nologo filnspect.vbs

Uso: cscript.exe/nologo filnspect.vbs [formato] [parametro]

        Formato Parametro
        /F      Ruta Carpeta
        /A      Ruta Archivo (Conteniendo listado)
        /L      Lista de archivos separados por coma
        /P      Análisis de procesos en ejecución (Cualquier valor)

Ejemplos:
        cscript.exe/nologo filnspect.vbs /F C:\WINDOWS
        cscript.exe/nologo filnspect.vbs /A C:\Archivos.txt
        cscript.exe/nologo filnspect.vbs /L "mstsc.exe,syskey.exe,appmgr.dll"
        cscript.exe/nologo filnspect.vbs /P -

C:\Documents and Settings\Novlucker\Escritorio>


Saludos  :P

P.d: Tener en cuenta de que puede servir para dar un primer vistazo, pero solo para eso, ya que el análisis en si se basa en el nombre de ejecutables, y si nos referimos a malware, este puede tomar el nombre de ejecutables legítimos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein