private async void button2_ClickAsync(object sender, EventArgs e) { pictureBox3.Image = null; bool is_key_valid = await VT_API.IsKeyValid(richTextBox2.Text, true); if (is_key_valid) { StartOK(pictureBox3); Settings.SaveKey(richTextBox2.Text, true); } else { StartNOK(pictureBox3); } }
private async Task <bool> ScanFiles(string taskid, bool runsafe) { Keys keys = Settings.GetKeys(); bool PremiumAvailable = keys.key[1].value != null && !String.IsNullOrEmpty(keys.key[1].value); bool PublicAvailable = keys.key[0].value != null && !String.IsNullOrEmpty(keys.key[0].value); bool PremiumActive = keys.key[1].active; bool PublicActive = keys.key[0].active; string key; int scannedfiles = 0; int totalfiles = upload_files.Count; int threatsfound = 0; bool ispremium = PremiumAvailable && PremiumActive; if (ispremium) { key = keys.key[1].value; } else { if (PublicAvailable && PublicActive) { key = keys.key[0].value; } else { return(false); } } List <string> active_avs = Settings.GetActiveAVs(); AV_Reports av_reports; try { av_reports = (AV_Reports)Settings.Get_Settings(typeof(AV_Reports)); } catch { av_reports = new AV_Reports(); av_reports.av_reports = new List <AV_Report>(); } List <string> queued_files = new List <string>(); if (totalfiles == 1) { UpdateCurrentFile(upload_files[0]); } pictureBox4.Image = Properties.Resources.loading; pictureBox4.Enabled = true; timer1.Enabled = true; timer1.Stop(); timer1.Interval = 1000; start_time = DateTime.Now; timer1.Start(); timer1_Tick(null, null); foreach (var file in upload_files) { await Task.Delay(1000); AV_Report report = await VT_API.ScanFile(file, key, active_avs, false, ispremium, this); if (TaskCanceled(taskid)) { return(false); } if (report == null) { queued_files.Add(file); } else { UpdateCurrentFile(file); av_reports.av_reports.Insert(0, report); scannedfiles++; if (VT_API.IsThreat(report)) { threatsfound++; } UpdateLabels(scannedfiles, totalfiles, threatsfound); } } foreach (var file in queued_files) { UpdateCurrentFile(file); AV_Report report = await VT_API.ScanFile(file, key, active_avs, true, ispremium, this); if (TaskCanceled(taskid)) { return(false); } av_reports.av_reports.Insert(0, report); scannedfiles++; if (VT_API.IsThreat(report)) { threatsfound++; } UpdateLabels(scannedfiles, totalfiles, threatsfound); } Settings.Save_Settings(av_reports); tasks.Remove(taskid); timer1.Stop(); timer1.Enabled = false; TogglePanel(panel1, false); TogglePanel(panel2, false); progressBar1.Tag = -1; FilesNum fileinfo = new FilesNum(totalfiles); fileinfo.threats = threatsfound; fileinfo.duration = "0"; fileinfo.duration = label15.Text; parent.last_history = 1; parent.btn_History_Click(fileinfo, null); if (openedmsg != null) { openedmsg.Close(); openedmsg = null; } if (runsafe) { if (threatsfound > 0) { notify_form.SetLabelMsg("Threats Found, no file(s) opened.", Color.FromArgb(192, 0, 0)); notify_form.ToggleButton(true); } else { await Task.Run(() => StartFiles()); notify_form.SetLabelMsg("No Threats Found. Opening File(s)", Color.Green); notify_form.DelayedClose(3000); } } return(true); }
private void LoadGridValues(AV_Reports reports, int files_num) { dataGridView1.Rows.Clear(); SHA256 sha256obj = SHA256.Create(); if (files_num == 0) { files_num = reports.av_reports.Count; } bool threat; string filehash; int i = 0; foreach (AV_Report report in reports.av_reports) { if (i == files_num) { break; } threat = VT_API.IsThreat(report); if (!File.Exists(report.file)) { if (!threat) { dataGridView1.Rows.Add(report.time, report.file, "Removed"); dataGridView1.Rows[i].Cells[2].Style.ForeColor = label_color; } else { dataGridView1.Rows.Add(report.time, report.file, "Clean"); dataGridView1.Rows[i].Cells[2].Style.ForeColor = clean_color; dataGridView1.Rows[i].Cells[3].Value = Properties.Resources.theme_background; } } else { filehash = VT_API.BytesToHexString(sha256obj.ComputeHash(File.ReadAllBytes(report.file))); if (threat && filehash.Equals(report.hash)) { dataGridView1.Rows.Add(report.time, report.file, "Detected"); dataGridView1.Rows[i].Cells[2].Style.ForeColor = detected_color; } else { if (threat) { dataGridView1.Rows.Add(report.time, report.file, "Removed"); dataGridView1.Rows[i].Cells[2].Style.ForeColor = label_color; } else { dataGridView1.Rows.Add(report.time, report.file, "Clean"); dataGridView1.Rows[i].Cells[2].Style.ForeColor = clean_color; dataGridView1.Rows[i].Cells[3].Value = Properties.Resources.theme_background; } } } dataGridView1.Rows[i].Cells[0].Style.ForeColor = date_color; i++; } sha256obj.Dispose(); dataGridView1.Refresh(); dataGridView1.ClearSelection(); }