comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Delphi] VirusTotal Scanner 0.1

  • 1 Respuestas
  • 1665 Vistas

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

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« en: Noviembre 01, 2013, 01:26:49 pm »
Un simple programa en Delphi para usar el API de VirusTotal.

Una imagen :



El codigo :

Código: Delphi
  1. // VirusTotal Scanner 0.1
  2. // (C) Doddy Hackman 2013
  3.  
  4. unit virus;
  5.  
  6. interface
  7.  
  8. uses
  9.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10.   Dialogs, sSkinManager, IdBaseComponent, IdComponent, IdTCPConnection,
  11.   IdTCPClient, IdHTTP, StdCtrls, sButton, sMemo, IdMultipartFormData, DBXJSON,
  12.   PerlRegEx, IdHashMessageDigest, idHash, sEdit, sGroupBox, ComCtrls, sListView,
  13.   sStatusBar, acPNG, ExtCtrls;
  14.  
  15. type
  16.   TForm1 = class(TForm)
  17.     IdHTTP1: TIdHTTP;
  18.     sSkinManager1: TsSkinManager;
  19.     PerlRegEx1: TPerlRegEx;
  20.     sGroupBox1: TsGroupBox;
  21.     sEdit1: TsEdit;
  22.     OpenDialog1: TOpenDialog;
  23.     sGroupBox2: TsGroupBox;
  24.     sListView1: TsListView;
  25.     sStatusBar1: TsStatusBar;
  26.     sGroupBox3: TsGroupBox;
  27.     sMemo1: TsMemo;
  28.     sGroupBox4: TsGroupBox;
  29.     sButton1: TsButton;
  30.     sButton2: TsButton;
  31.     sButton4: TsButton;
  32.     sButton5: TsButton;
  33.     Image1: TImage;
  34.  
  35.     procedure FormCreate(Sender: TObject);
  36.     procedure sButton1Click(Sender: TObject);
  37.     procedure sButton2Click(Sender: TObject);
  38.     procedure sButton4Click(Sender: TObject);
  39.     procedure sButton5Click(Sender: TObject);
  40.  
  41.   private
  42.  
  43.     { Private declarations }
  44.   public
  45.     { Public declarations }
  46.   end;
  47.  
  48. var
  49.   Form1: TForm1;
  50.  
  51. implementation
  52.  
  53. {$R *.dfm}
  54.  
  55. function convertirmd5(const archivo: string): string;
  56. var
  57.   valormd5: TIdHashMessageDigest5;
  58.   archivox: TFileStream;
  59. begin
  60.  
  61.   valormd5 := TIdHashMessageDigest5.Create;
  62.   archivox := TFileStream.Create(archivo, fmOpenRead);
  63.   Result := valormd5.HashStreamAsHex(archivox)
  64.  
  65. end;
  66.  
  67. procedure TForm1.FormCreate(Sender: TObject);
  68. var
  69.   dir: string;
  70. begin
  71.   sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  72.   sSkinManager1.SkinName := 'falloutstyle';
  73.   sSkinManager1.Active := True;
  74.  
  75. end;
  76.  
  77. procedure TForm1.sButton1Click(Sender: TObject);
  78. begin
  79.   OpenDialog1.InitialDir := GetCurrentDir;
  80.   if OpenDialog1.Execute then
  81.   begin
  82.     sEdit1.Text := OpenDialog1.filename;
  83.   end;
  84. end;
  85.  
  86. procedure TForm1.sButton2Click(Sender: TObject);
  87.  
  88. var
  89.   datos: TIdMultiPartFormDataStream;
  90.   code: string;
  91.   antivirus: string;
  92.   resultado: string;
  93.  
  94.   html: string;
  95.  
  96. begin
  97.  
  98.   if FileExists(sEdit1.Text) then
  99.   begin
  100.  
  101.     sMemo1.Clear;
  102.     sListView1.Clear;
  103.  
  104.     sStatusBar1.Panels[0].Text := '[+] Scanning ...';
  105.     Form1.sStatusBar1.Update;
  106.  
  107.     datos := TIdMultiPartFormDataStream.Create;
  108.     datos.AddFormField('resource', convertirmd5(sEdit1.Text));
  109.     datos.AddFormField('apikey',
  110.       'fuck you');
  111.  
  112.     code := IdHTTP1.Post('http://www.virustotal.com/vtapi/v2/file/report',
  113.       datos);
  114.  
  115.     code := StringReplace(code, '{"scans":', '', [rfReplaceAll, rfIgnoreCase]);
  116.  
  117.     PerlRegEx1.Regex :=
  118.       '"(.*?)": {"detected": (.*?), "version": (.*?), "result": (.*?), "update": (.*?)}';
  119.     PerlRegEx1.Subject := code;
  120.  
  121.     while PerlRegEx1.MatchAgain do
  122.     begin
  123.  
  124.       antivirus := PerlRegEx1.SubExpressions[1];
  125.       resultado := PerlRegEx1.SubExpressions[4];
  126.       resultado := StringReplace
  127.         (resultado, '"', '', [rfReplaceAll, rfIgnoreCase]);
  128.  
  129.       with sListView1.Items.Add do
  130.       begin
  131.         Caption := antivirus;
  132.         if (resultado = 'null') then
  133.         begin
  134.           SubItems.Add('Clean');
  135.         end
  136.         else
  137.         begin
  138.           SubItems.Add(resultado);
  139.         end;
  140.       end;
  141.  
  142.     end;
  143.  
  144.     PerlRegEx1.Regex := '"scan_id": "(.*?)"';
  145.     PerlRegEx1.Subject := code;
  146.  
  147.     if PerlRegEx1.Match then
  148.     begin
  149.       sMemo1.Lines.Add('[+] Scan_ID : ' + PerlRegEx1.SubExpressions[1]);
  150.     end;
  151.  
  152.     PerlRegEx1.Regex := '"scan_date": "(.*?)"';
  153.     PerlRegEx1.Subject := code;
  154.  
  155.     if PerlRegEx1.Match then
  156.     begin
  157.       sMemo1.Lines.Add('[+] Scan_Date : ' + PerlRegEx1.SubExpressions[1]);
  158.     end;
  159.  
  160.     PerlRegEx1.Regex := '"permalink": "(.*?)"';
  161.     PerlRegEx1.Subject := code;
  162.  
  163.     if PerlRegEx1.Match then
  164.     begin
  165.       sMemo1.Lines.Add('[+] PermaLink : ' + PerlRegEx1.SubExpressions[1]);
  166.     end;
  167.  
  168.     PerlRegEx1.Regex :=
  169.       '"verbose_msg": "(.*?)", "total": (.*?), "positives": (.*?),';
  170.     PerlRegEx1.Subject := code;
  171.  
  172.     if PerlRegEx1.Match then
  173.     begin
  174.       sMemo1.Lines.Add('[+] Founds : ' + PerlRegEx1.SubExpressions[3]
  175.           + '/' + PerlRegEx1.SubExpressions[2]);
  176.     end;
  177.     sStatusBar1.Panels[0].Text := '[+] Done';
  178.     Form1.sStatusBar1.Update;
  179.   end
  180.   else
  181.   begin
  182.     sStatusBar1.Panels[0].Text := '[-] File Not Found';
  183.     Form1.sStatusBar1.Update;
  184.   end;
  185. end;
  186.  
  187. procedure TForm1.sButton4Click(Sender: TObject);
  188. begin
  189.   ShowMessage('Contact to lepuke[at]hotmail[com]');
  190. end;
  191.  
  192. procedure TForm1.sButton5Click(Sender: TObject);
  193. begin
  194.   Form1.Close();
  195. end;
  196.  
  197. end.
  198.  
  199. // The End ?
  200.  

Si lo quieren bajar lo pueden hacer de aca.

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Noviembre 01, 2013, 01:48:10 pm »
Excelente Doddy! Son tantas las tools q has codeado q podrías armar un kit tranquilamente jeje.

Gracias por el aporte!

Saludos!
WhiZ


 

¿Te gustó el post? COMPARTILO!



Eliminar acentos y otros agregados de un caracter/cadena Delphi 2009

Iniciado por ANTRAX

Respuestas: 0
Vistas: 3259
Último mensaje Febrero 24, 2010, 04:57:14 pm
por ANTRAX
[Sintaxis general de Delphi] By: Geek Lord Venezuela [R00t] Team

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2050
Último mensaje Febrero 24, 2010, 04:35:15 pm
por ANTRAX
1er troyano en Delphi By: Geek Lord Venezuela [R00t] Team

Iniciado por ANTRAX

Respuestas: 0
Vistas: 3490
Último mensaje Febrero 24, 2010, 04:34:48 pm
por ANTRAX
[Delphi] Creacion de un Server Builder con recursos

Iniciado por BigBear

Respuestas: 1
Vistas: 1477
Último mensaje Marzo 09, 2015, 07:56:20 pm
por Flemon
[Delphi] Project Arsenal X 0.2 (Regalo de navidad)

Iniciado por BigBear

Respuestas: 2
Vistas: 2922
Último mensaje Diciembre 28, 2015, 10:27:44 am
por BigBear