コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }