Win Http - Virus Total

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Win Http - Virus Total

Mensaje por ms999 »

Hola foro, ando con una idea en la cabeza hace rato, yo uso mucho el sitio http://www.virustotal.com es una web donde puedes subir archivos o links a webs y alli lo ecanean con 42 antivirus dferentes, es algo muy util si bajas muchas cosas o muchos scripts desde internet, mi idea es automatizar esta web, para que con un script cualquiera pueda subir uno o varios archivos(poniendolos en cola) desde su PC y recibir los resultados.
Vi que este sitio ofrece una API para poder hacer este tipo de automatizaciones a travez de scripts, mi problema es que nunca use Win Http, encontre una include con las funciones que de seguro me serviran para este proposito WinHTTP functionspero necesito alguna guia para poder empezar. Si alguno de ustedes tiene experiencia con win http podria ayudarme.
Por ejemplo, la ayuda que dan sobre la API dice que para recibir el informe de un archivo subido debo hacer un HTTP POST a una direccion:
$URL = https://www.virustotal.com/api/get_file_report.json
Con los siguientes parametros HTTP POST, resource(md5/sha1/sha256 hash del archivo cuyo reporte quiero) y Key(Mi clave para poder usar esta API)
$resource = 779f2f7623a90dac3197b11f802c87ff063efcaf4a67b234b0d25f0ffa66fe9c ; hash de un archivo ya subido ( Link del reporte
$key = 5e667a8e7bdbf27c42038500ff995b0840f1e68966cacdafc49c402aaa077a50 ; dejo mi APIkey no creo que pase nada malo con ella conseguirla es gratis
Ahora mi duda es como hacer esto mandar ese post y recibir la lista... ya se que me meti en un lio, pero con su ayuda quiza pueda lograrlo y aprender algo de esto.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Win Http - Virus Total

Mensaje por Chefito »

Hay muchas formas de recuperar esos datos. Desde la udf http, objeto winhttp.winhttprequest.5.1, udf winhttp, udf wininet, etc.
Me gusta la udf winhttp. Ahora mismo yo la estoy viendo para intentar bajar archivos fraccionados de forma asíncrona. Voy por buen camino. A ver si acaba bien :smt002 .

Cogiendo el ejemplo de la función _WinHttpSimpleRequest y poniendo tus datos, nos quedaría este código:

Código: Seleccionar todo

#include "WinHttp.au3"

Opt("MustDeclareVars", 1)

; Initialize and get session handle
Global $hOpen = _WinHttpOpen()
; Get connection handle
Global $hConnect = _WinHttpConnect($hOpen, "www.virustotal.com")

; Simple-request it...
MsgBox(64, "Resultados del análisis", _WinHttpSimpleRequest($hConnect, "POST", "/api/get_file_report.json", Default, "resource=779f2f7623a90dac3197b11f802c87ff063efcaf4a67b234b0d25f0ffa66fe9c&key=5e667a8e7bdbf27c42038500ff995b0840f1e68966cacdafc49c402aaa077a50"))

; Close handles
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Por interes, te voy a decir como hacerlo con el objeto winhttp.winhttprequest.5.1:

Código: Seleccionar todo

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST","http://www.virustotal.com/api/get_file_report.json")
$oHTTP.Send(StringToBinary("resource=779f2f7623a90dac3197b11f802c87ff063efcaf4a67b234b0d25f0ffa66fe9c&key=5e667a8e7bdbf27c42038500ff995b0840f1e68966cacdafc49c402aaa077a50"))
$HTMLSource = $oHTTP.Responsetext
MsgBox(0,"RESULTADO",$HTMLSource)
Puedes ver este código (logicamente algo modificado :smt001 ) en la ayuda de autoit, en AutoIt>GUI Reference>Ojb/COM Reference.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Win Http - Virus Total

Mensaje por ms999 »

Muchas gracias Chefito, ahi vi como se ponen los parametros, vere en MSDN que dice sobre el objeto winhttp.winhttprequest.5.1, me parece que utilizare esa manera de tratar estas POSTs. Ultimamemente hice unas cositas con objetos y me quedaron las
ganas de aprender a usarlos y conocerlos, si tengo otra duda sobre este proyecto la postearé aqui.
Responder