Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Json parse result from virustotal api

I was playing around with the virustotal api today while becoming back the result in this form:

{ "permalink" : "http://www.virustotal.com/file-scan/report.html?id=7b6b268cbca9d421aabba5f08533d3dcaba50e0f7887b07ef2bd66bf218b35ff-1304089592",
  "report" : [ "2011-04-29 15:06:32",
      { "AVG" : "Exploit_c.TVH",
        "AhnLab-V3" : "PDF/Exploit",
        "AntiVir" : "EXP/Pidief.UK",
        "Antiy-AVL" : "Trojan/win32.agent",
        "Avast" : "JS:Pdfka-gen",
        "Avast5" : "JS:Pdfka-gen",
        "BitDefender" : "Exploit.PDF-JS.Gen",
        "CAT-QuickHeal" : "",
        "ClamAV" : "",
        "Comodo" : "Exploit.JS.Pidief.~AWQ",
        "DrWeb" : "",
        "Emsisoft" : "Exploit.JS.Pdfka!IK",
        "F-Prot" : "",
        "F-Secure" : "Exploit:W32/Pidief.DEE",
        "Fortinet" : "",
        "GData" : "",
        "Ikarus" : "Exploit.JS.Pdfka",
        "Jiangmin" : "",
        "K7AntiVirus" : "",
        "Kaspersky" : "Exploit.JS.Pdfka.dnc",
        "McAfee" : "",
        "McAfee-GW-Edition" : "",
        "Microsoft" : "Exploit:Win32/Pdfjsc.NJ",
        "NOD32" : "PDF/Exploit.Pidief.PGD",
        "Norman" : "",
        "PCTools" : "Trojan.Pidief",
        "Panda" : "",
        "Prevx" : "",
        "Rising" : "",
        "SUPERAntiSpyware" : "",
        "Sophos" : "Troj/PDFJs-RD",
        "Symantec" : "Trojan.Pidief",
        "TheHacker" : "",
        "TrendMicro" : "TROJ_PIDIEF.VTG",
        "TrendMicro-HouseCall" : "TROJ_PIDIEF.VTG",
        "VBA32" : "",
        "VIPRE" : "Exploit.PDF-JS.Gen (v)",
        "ViRobot" : "PDF.S.Exploit.74634",
        "VirusBuster" : "",
        "eSafe" : "",
        "eTrust-Vet" : ""
      }
    ],
  "result" : 1
}

I would like to know how one can parse this result to fill a memo like:

Memo1.Lines.Add(Format('Antivirus: %0s Result: %1s', [...]));

Well, I really have no clue about all the JSon components which might be around to maybe someone can direct me to the right direction here?

Kindest regards,

H.Meiser

like image 961
HMeiser Avatar asked Jun 02 '11 16:06

HMeiser


2 Answers

Parsing Json string is not difficult, you can use the DBXJSON unit included since delphi 2010.

check this sample code

Uses
  DBXJSON;

procedure TForm1.ParseString(const AString: string);
var
  json          : TJSONObject;
  jPair         : TJSONPair;
  jValue        : TJSONValue;
  jcValue       : TJSONValue;
  l,i           : Integer;
begin
    json    := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(AString),0) as TJSONObject;
  try
    //get the pair to evaluate in this case the index is 1
    jPair   := json.Get(1);
    //cast the JsonValue to TJSONArray to access the elements of the array
    jValue := TJSONArray(jPair.JsonValue).Get(1);
    l:=TJSONArray(jValue).Size;
    for i:=0 to l-1 do
    begin
     //get the i element of the array 
     jcValue := TJSONArray(jValue).Get(i);
     //get the pair pointing to the i element 
     jPair   := TJSONPair(jcValue);
     //show the result 
     Memo1.Lines.Add(Format('Antivirus %s Result %s',[jPair.JsonString.Value,jPair.JsonValue.Value]));
    end;
  finally
     json.Free;
  end;
end;

As additional recommendation you must read a Json tutorial to learn how interpret the Json format and in this way you must be preparated to use any library available.

like image 67
RRUZ Avatar answered Oct 03 '22 20:10

RRUZ


I recommend the open source JSON library SuperObject and online JSON inspectors like http://jsonviewer.stack.hu/ or http://json.parser.online.fr/ (this editor has a very useful option which adds type information to the view)

like image 42
mjn Avatar answered Oct 03 '22 19:10

mjn