Página 1 de 1

Win Http - Virus Total

Publicado: 28 Jun 2011, 19:55
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.

Re: Win Http - Virus Total

Publicado: 29 Jun 2011, 00:52
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.

Re: Win Http - Virus Total

Publicado: 29 Jun 2011, 16:04
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.