/// <summary>
        /// Loads data grid settings back up into the table
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void DDoSDisplay_Load(object sender, EventArgs e)
        {
            // load the blockcache and the threshhold
            blockcache        = new List <BlockedIP>(this.dosmod.data.BlockCache);
            thresholdBox.Text = Convert.ToString(this.dosmod.data.dos_threshold);

            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.ENGLISH:
                removeButton.Text = "Remove IP";
                addButton.Text    = "Add IP";
                dosBlockTable.Columns[0].HeaderText = "IP Address";
                dosBlockTable.Columns[1].HeaderText = "Reason";
                dosBlockTable.Columns[2].HeaderText = "Date Blocked";
                break;

            case LanguageConfig.Language.PORTUGUESE:
                removeButton.Text = "remover IP";
                addButton.Text    = "Adicionar IP";
                dosBlockTable.Columns[0].HeaderText = "Endereço IP";
                dosBlockTable.Columns[1].HeaderText = "razão";
                dosBlockTable.Columns[2].HeaderText = "data bloqueados";
                break;

            case LanguageConfig.Language.CHINESE:
                removeButton.Text = "删除IP";
                addButton.Text    = "添加IP";
                dosBlockTable.Columns[0].HeaderText = "IP地址";
                dosBlockTable.Columns[1].HeaderText = "原因";
                dosBlockTable.Columns[2].HeaderText = "日期已封鎖";
                break;

            case LanguageConfig.Language.GERMAN:
                removeButton.Text = "entfernen IP";
                addButton.Text    = "Add IP";
                dosBlockTable.Columns[0].HeaderText = "IP-Adresse";
                dosBlockTable.Columns[1].HeaderText = "Grund";
                dosBlockTable.Columns[2].HeaderText = "Datum Blocked";
                break;

            case LanguageConfig.Language.RUSSIAN:
                removeButton.Text = "Удалите IP";
                addButton.Text    = "Добавить IP-";
                dosBlockTable.Columns[0].HeaderText = "IP-адрес";
                dosBlockTable.Columns[1].HeaderText = "причина";
                dosBlockTable.Columns[2].HeaderText = "Дата Заблокированные";
                break;

            case LanguageConfig.Language.SPANISH:
                removeButton.Text = "quitar IP";
                addButton.Text    = "Añadir IP";
                dosBlockTable.Columns[0].HeaderText = "Dirección IP";
                dosBlockTable.Columns[1].HeaderText = "Razón";
                dosBlockTable.Columns[2].HeaderText = "Fecha Bloqueados";
                break;
            }
            RebuildTable();
        }
Beispiel #2
0
        /// <summary>
        /// Language load for option settings
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OptionsDisplay_Load(object sender, EventArgs e)
        {
            foreach (string theme in ColorScheme.GetThemes())
            {
                themeBox.Items.Add(theme);
            }
            themeBox.SelectedItem = ColorScheme.GetCurrentTheme();

            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                displayTrayLogs.Text      = "Display Icon Popups";
                languageLabel.Text        = "Language: ";
                languageBox.SelectedIndex = 1;
                break;

            case LanguageConfig.Language.PORTUGUESE:
                displayTrayLogs.Text      = "Mostrar Popups Icon";
                languageLabel.Text        = "Linguagem: ";
                languageBox.SelectedIndex = 6;
                break;

            case LanguageConfig.Language.CHINESE:
                displayTrayLogs.Text      = "显示图标弹出窗口";
                languageLabel.Text        = "語言標籤:";
                languageBox.SelectedIndex = 4;
                break;

            case LanguageConfig.Language.GERMAN:
                displayTrayLogs.Text      = "Anzeige Icon Popups";
                languageLabel.Text        = "Sprachensiegel:";
                languageBox.SelectedIndex = 3;
                break;

            case LanguageConfig.Language.RUSSIAN:
                displayTrayLogs.Text      = "Показать Иконка всплывающие окна";
                languageLabel.Text        = "Язык этикетки:";
                languageBox.SelectedIndex = 5;
                break;

            case LanguageConfig.Language.SPANISH:
                displayTrayLogs.Text      = "Mostrar ventanas emergentes Icono";
                languageLabel.Text        = "Lenguaje de etiquetas:";
                languageBox.SelectedIndex = 2;
                break;
            }
            checkBox1.Checked = Program.uc.Config.StartUpCheck;
            checkBox2.Checked = Program.uc.Config.Enabled;
            checkBoxStartMinimized.Checked = TrayIcon.StartMinimized;
            textBox1.Text             = Program.uc.Config.MinuteInterval.ToString();
            displayTrayLogs.Checked   = TrayIcon.displayTrayLogs;
            ColorScheme.ThemeChanged += new System.Threading.ThreadStart(ColorScheme_ThemeChanged);

            maxLogsBox.Text = Convert.ToString(gSettings.max_logs);
            maxPcapBox.Text = Convert.ToString(gSettings.max_pcap_logs);
        }
Beispiel #3
0
        private void AdapterDisplay_Load(object sender, EventArgs e)
        {
            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                button1.Text      = "Enabled";
                buttonConfig.Text = "Configure Device";
                break;

            case LanguageConfig.Language.PORTUGUESE:
                button1.Text      = "Permitir";
                buttonConfig.Text = "Configurar Dispositivo";
                break;

            case LanguageConfig.Language.CHINESE:
                button1.Text      = "启用";
                buttonConfig.Text = "配置设备";
                break;

            case LanguageConfig.Language.GERMAN:
                button1.Text      = "ermöglichen";
                buttonConfig.Text = "Gerät konfigurieren";
                break;

            case LanguageConfig.Language.RUSSIAN:
                button1.Text      = "Включить";
                buttonConfig.Text = "Настройка устройства";
                break;

            case LanguageConfig.Language.SPANISH:
                button1.Text      = "permitir";
                buttonConfig.Text = "configurar dispositivo";
                break;
            }
        }
Beispiel #4
0
        private void AddEditRule_Load(object sender, EventArgs e)
        {
            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.ENGLISH:
                comboBox1.Items.Add("All TCP Rule");         //0
                comboBox1.Items.Add("TCP IP and Port Rule"); //1
                comboBox1.Items.Add("TCP Port Rule");        //2
                comboBox1.Items.Add("All UDP Rule");         //3
                comboBox1.Items.Add("UDP Port Rule");        //4
                comboBox1.Items.Add("All Rule");             //5
                comboBox1.Items.Add("IP Rule");              //6
                break;

            case LanguageConfig.Language.PORTUGUESE:
                comboBox1.Items.Add("Todos Regra TCP");
                comboBox1.Items.Add("TCP IP e regra de porta");
                comboBox1.Items.Add("Porta TCP Regra");
                comboBox1.Items.Add("Todos Regra UDP");
                comboBox1.Items.Add("Porta UDP Regra");
                comboBox1.Items.Add("Todos Regra");
                comboBox1.Items.Add("Regra IP");
                break;

            case LanguageConfig.Language.CHINESE:
                comboBox1.Items.Add("所有的TCP規則");
                comboBox1.Items.Add("TCP IP和端口規則");
                comboBox1.Items.Add("TCP端口規則");
                comboBox1.Items.Add("所有的UDP規則");
                comboBox1.Items.Add("UDP端口規則");
                comboBox1.Items.Add("所有規則");
                comboBox1.Items.Add("IP规则");
                break;

            case LanguageConfig.Language.GERMAN:
                comboBox1.Items.Add("Alle TCP Rule");
                comboBox1.Items.Add("TCP IP und Port Regel");
                comboBox1.Items.Add("TCP Port Rule");
                comboBox1.Items.Add("Alle UDP Regel");
                comboBox1.Items.Add("UDP Port Rule");
                comboBox1.Items.Add("Alle Rule");
                comboBox1.Items.Add("IP Rule");
                break;

            case LanguageConfig.Language.RUSSIAN:
                comboBox1.Items.Add("Все правила TCP");
                comboBox1.Items.Add("TCP-IP и порт Правило");
                comboBox1.Items.Add("TCP-порт Правило");
                comboBox1.Items.Add("Все правила UDP");
                comboBox1.Items.Add("UDP-порта Правило");
                comboBox1.Items.Add("Все правила");
                comboBox1.Items.Add("IP правила");
                break;

            case LanguageConfig.Language.SPANISH:
                comboBox1.Items.Add("Todos los Regla TCP");
                comboBox1.Items.Add("TCP IP y puerto de Regla");
                comboBox1.Items.Add("Puerto TCP Regla");
                comboBox1.Items.Add("Todos los Regla UDP");
                comboBox1.Items.Add("El puerto UDP Regla");
                comboBox1.Items.Add("todos los Regla");
                comboBox1.Items.Add("Regla IP");
                break;
            }
        }
        private void MainWindow_Load(object sender, EventArgs e)
        {
            ColorScheme.SetColorScheme(this);
            //optionsTab.ItemSize = new Size((this.Width / 4) - 6, optionsTab.ItemSize.Height);
            System.Reflection.Assembly target = System.Reflection.Assembly.GetExecutingAssembly();
            this.Icon    = new System.Drawing.Icon(target.GetManifestResourceStream("PassThru.Resources.newIcon.ico"));
            LogCenter.ti = new TrayIcon();
            Program.uc   = new UpdateChecker();
            Program.uc.Updater();
            PassThru.Tabs.DownloadCenter.Instance.Width  = 800;
            PassThru.Tabs.DownloadCenter.Instance.Height = 600;
            PassThru.Tabs.DownloadCenter.Instance.Show();
            PassThru.Tabs.DownloadCenter.Instance.Hide();
            // call the log purger
            LogCenter.cleanLogs();

            log      = new Tabs.LogDisplay();
            log.Dock = DockStyle.Fill;
            ColorScheme.SetColorScheme(log);
            LogCenter.PushLogEvent += new LogCenter.NewLogEvent(log.Instance_PushLogEvent);
            splitContainer1.Panel2.Controls.Add(log);

            // load up the adapter control handler
            ac = new AdapterControl();
            ColorScheme.SetColorScheme(ac);
            ac.Dock = DockStyle.Fill;
            //tabPage3.Controls.Add(ac);

            // load up the options tab handler
            od = new OptionsDisplay();
            ColorScheme.SetColorScheme(od);
            od.Dock = DockStyle.Fill;
            //tabPage2.Controls.Add(od);

            // load up the options tab handler
            help = new Help();
            ColorScheme.SetColorScheme(help);
            help.Dock = DockStyle.Fill;
            //tabPage4.Controls.Add(help);

            ColorScheme.ThemeChanged += new System.Threading.ThreadStart(ColorScheme_ThemeChanged);

            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                tabPage1.Text = "Log";
                tabPage2.Text = "Options";
                tabPage3.Text = "Adapters";
                break;

            case LanguageConfig.Language.CHINESE:
                tabPage1.Text = "登录";
                tabPage2.Text = "选项";
                tabPage3.Text = "适配器";
                break;

            case LanguageConfig.Language.GERMAN:
                tabPage1.Text = "Log";
                tabPage2.Text = "Optionen";
                tabPage3.Text = "Adapter";
                break;

            case LanguageConfig.Language.RUSSIAN:
                tabPage1.Text = "журнал";
                tabPage2.Text = "опции";
                tabPage3.Text = "Адаптеры";
                break;

            case LanguageConfig.Language.SPANISH:
                tabPage1.Text = "log";
                tabPage2.Text = "opciones";
                tabPage3.Text = "adaptadores";
                break;

            case LanguageConfig.Language.PORTUGUESE:
                tabPage1.Text = "Entrar";
                tabPage2.Text = "opções";
                tabPage3.Text = "adaptadores";
                break;
            }
            MainWindow_Resize(null, null);
            if (TrayIcon.StartMinimized)
            {
                this.WindowState = FormWindowState.Minimized;
            }
            ColorScheme_ThemeChanged();
        }
        /// <summary>
        /// Big fat language-setting-label-setter
        /// </summary>
        private void setLabels()
        {
            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                connAcceptLabel.Text     = "Connections Accepted:";
                connInitLabel.Text       = "Connections Initiated:";
                cumulativeConnLabel.Text = "Cumulative Connections:";
                errRecLabel.Text         = "Errors Received:";
                failedConnAttLabel.Text  = "Failed Connection Attempts:";
                maxConLabel.Text         = "Maximum Connections:";
                resetConLabel.Text       = "Reset Connections:";
                resetsSentLabel.Text     = "Resets Sent:";
                segRecLabel.Text         = "Segments Received:";
                segResentLabel.Text      = "Segments Resent:";
                segSentLabel.Text        = "Segments Sent:";
                dataRecLabel.Text        = "Datagrams Received:";
                dataSentLabel.Text       = "Datagrams Sent:";
                incDataDiscLabel.Text    = "Incoming Datagrams Discarded:";
                incDataWErrLabel.Text    = "Incoming Datagrams With Errors:";
                break;

            case LanguageConfig.Language.CHINESE:
                connAcceptLabel.Text     = "連接接受:";
                connInitLabel.Text       = "連接啟動:";
                cumulativeConnLabel.Text = "累計連接:";
                errRecLabel.Text         = "錯誤時接收:";
                failedConnAttLabel.Text  = "連接嘗試失敗:";
                maxConLabel.Text         = "最大連接數:";
                resetConLabel.Text       = "重置連接:";
                resetsSentLabel.Text     = "復位發送:";
                segRecLabel.Text         = "分部收稿:";
                segResentLabel.Text      = "段反感:";
                segSentLabel.Text        = "段發送:";
                dataRecLabel.Text        = "數據報收稿:";
                dataSentLabel.Text       = "數據報發送:";
                incDataDiscLabel.Text    = "捨去傳入的數據報:";
                incDataWErrLabel.Text    = "有錯誤的傳入的數據報:";
                break;

            case LanguageConfig.Language.GERMAN:
                connAcceptLabel.Text     = "Verbindungen angenommen:";
                connInitLabel.Text       = "Verbindungen initiiert:";
                cumulativeConnLabel.Text = "Kumulierte Connections:";
                errRecLabel.Text         = "Errors Received:";
                failedConnAttLabel.Text  = "Fehlgeschlagene Verbindungsversuche:";
                maxConLabel.Text         = "maximale Verbindungen:";
                resetConLabel.Text       = "Rücksetzanschlüsse:";
                resetsSentLabel.Text     = "Setzt Sent:";
                segRecLabel.Text         = "Segmente empfangen:";
                segResentLabel.Text      = "Segmente Resent:";
                segSentLabel.Text        = "Segmente Sent:";
                dataRecLabel.Text        = "Empfangene Datagramme:";
                dataSentLabel.Text       = "Datagramme:";
                incDataDiscLabel.Text    = "Eingehende Datagramme verworfen:";
                incDataWErrLabel.Text    = "Eingehende Datagramme mit Fehler:";
                break;

            case LanguageConfig.Language.RUSSIAN:
                connAcceptLabel.Text     = "Принято подключений:";
                connInitLabel.Text       = "соединения, инициированные:";
                cumulativeConnLabel.Text = "Накопительное подключений:";
                errRecLabel.Text         = "Ошибки Поступила в редакцию:";
                failedConnAttLabel.Text  = "Неудачных попыток подключения:";
                maxConLabel.Text         = "Максимальная подключений:";
                resetConLabel.Text       = "Сброс подключений:";
                resetsSentLabel.Text     = "Сброс Отправленные:";
                segRecLabel.Text         = "Сегменты Поступила в редакцию:";
                segResentLabel.Text      = "Сегменты Resent:";
                segSentLabel.Text        = "Сегменты Отправленные:";
                dataRecLabel.Text        = "Датаграммы Поступило:";
                dataSentLabel.Text       = "датаграммы, посланные:";
                incDataDiscLabel.Text    = "Входящих датаграмм Выкинуть:";
                incDataWErrLabel.Text    = "Входящие пакеты с ошибками:";
                break;

            case LanguageConfig.Language.PORTUGUESE:
            case LanguageConfig.Language.SPANISH:
                connAcceptLabel.Text     = "conexiones aceptadas:";
                connInitLabel.Text       = "conexiones que se inician:";
                cumulativeConnLabel.Text = "Conexiones acumulada:";
                errRecLabel.Text         = "errores recibidos:";
                failedConnAttLabel.Text  = "Intentos fallidos de conexión:";
                maxConLabel.Text         = "máximo de conexiones:";
                resetConLabel.Text       = "Conexiones de reajuste:";
                resetsSentLabel.Text     = "restablece Enviado:";
                segRecLabel.Text         = "segmentos recibidos:";
                segResentLabel.Text      = "segmentos Reenviado:";
                segSentLabel.Text        = "segmentos enviados:";
                dataRecLabel.Text        = "datagramas recibidos:";
                dataSentLabel.Text       = "datagramas enviados:";
                incDataDiscLabel.Text    = "Datagramas de entrada desechados:";
                incDataWErrLabel.Text    = "Los datagramas entrantes con errores:";
                break;
            }
        }
Beispiel #7
0
        private void button1_Click(object sender, EventArgs e)
        {
            ai.NetAdapter.Enabled = !ai.NetAdapter.Enabled;
            if (ai.NetAdapter.Enabled)
            {
                switch (LanguageConfig.GetCurrentLanguage())
                {
                case LanguageConfig.Language.NONE:
                case LanguageConfig.Language.ENGLISH:
                    button1.Text = "Enabled";
                    break;

                case LanguageConfig.Language.PORTUGUESE:
                    button1.Text = "Permitir";
                    break;

                case LanguageConfig.Language.CHINESE:
                    button1.Text = "启用";
                    break;

                case LanguageConfig.Language.GERMAN:
                    button1.Text = "ermöglichen";
                    break;

                case LanguageConfig.Language.RUSSIAN:
                    button1.Text = "Включить";
                    break;

                case LanguageConfig.Language.SPANISH:
                    button1.Text = "permitir";
                    break;
                }
            }
            else
            {
                switch (LanguageConfig.GetCurrentLanguage())
                {
                case LanguageConfig.Language.NONE:
                case LanguageConfig.Language.ENGLISH:
                    button1.Text = "Disabled";
                    break;

                case LanguageConfig.Language.PORTUGUESE:
                    button1.Text = "desativado";
                    break;

                case LanguageConfig.Language.CHINESE:
                    button1.Text = "禁用";
                    break;

                case LanguageConfig.Language.GERMAN:
                    button1.Text = "deaktiviert";
                    break;

                case LanguageConfig.Language.RUSSIAN:
                    button1.Text = "инвалид";
                    break;

                case LanguageConfig.Language.SPANISH:
                    button1.Text = "discapacitado";
                    break;
                }
            }
        }
Beispiel #8
0
        private void ArpPoisoningProtection_Load(object sender, EventArgs e)
        {
            checkBoxLogPoisoning.Checked   = saap.data.LogAttacks;
            checkBoxLogUnsolicited.Checked = saap.data.LogUnsolic;
            checkBoxSave.Checked           = saap.data.Save;
            checkBoxRectify.Checked        = saap.data.RectifyAttacks;
            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                checkBoxSave.Text           = "Save ARP Cache";
                checkBoxLogUnsolicited.Text = "Log Unsolicited";
                checkBoxLogPoisoning.Text   = "Log Attacks";
                button1.Text         = "Remove Entry";
                button2.Text         = "Clear Cache";
                checkBoxRectify.Text = "Rectify Attacks";
                break;

            case LanguageConfig.Language.PORTUGUESE:
                checkBoxSave.Text           = "Salve Cache ARP";
                checkBoxLogUnsolicited.Text = "Entrar Unsolicited";
                checkBoxLogPoisoning.Text   = "Entrar Ataques";
                button1.Text         = "remover Entrada";
                button2.Text         = "Limpar Cache";
                checkBoxRectify.Text = "Eliminar os ataques";
                break;

            case LanguageConfig.Language.CHINESE:
                checkBoxSave.Text           = "保存ARP缓存";
                checkBoxLogUnsolicited.Text = "登录未经请求";
                checkBoxLogPoisoning.Text   = "登录攻击";
                button1.Text         = "删除条目";
                button2.Text         = "清除缓存";
                checkBoxRectify.Text = "纠正攻击";
                break;

            case LanguageConfig.Language.GERMAN:
                checkBoxSave.Text           = "Save ARP Cache";
                checkBoxLogUnsolicited.Text = "Log Initiativbewerbung";
                checkBoxLogPoisoning.Text   = "Log Attacks";
                button1.Text         = "Eintrag entfernen";
                button2.Text         = "Cache löschen";
                checkBoxRectify.Text = "beheben Sie Angriffe";
                break;

            case LanguageConfig.Language.RUSSIAN:
                checkBoxSave.Text           = "Сохранить ARP кэш";
                checkBoxLogUnsolicited.Text = "Вход Незапрошенные";
                checkBoxLogPoisoning.Text   = "Вход атак";
                button1.Text         = "Удалить Вступление";
                button2.Text         = "Очистить кэш";
                checkBoxRectify.Text = "Устранение атак";
                break;

            case LanguageConfig.Language.SPANISH:
                checkBoxSave.Text           = "Guardar la caché ARP";
                checkBoxLogUnsolicited.Text = "registro no solicitados";
                checkBoxLogPoisoning.Text   = "Los ataques de registro";
                button1.Text         = "eliminar entrada";
                button2.Text         = "Borrar la caché";
                checkBoxRectify.Text = "rectificar los ataques";
                break;
            }
            saap_UpdatedArpCache();
        }
Beispiel #9
0
        public override PacketMainReturn interiorMain(ref Packet in_packet)
        {
            if (in_packet.GetHighestLayer() == Protocol.ARP)
            {
                ARPPacket arpp = (ARPPacket)in_packet;
                if (arpp.isRequest && arpp.Outbound)
                {
                    int ip = arpp.ATargetIP.GetHashCode();
                    if (!requestedIPs.Contains(ip))
                    {
                        requestedIPs.Add(ip);
                    }
                }
                else if (!arpp.Outbound)
                {
                    int ip = arpp.ASenderIP.GetHashCode();
                    if (!arpp.isRequest)
                    {
                        if (requestedIPs.Contains(ip))
                        {
                            lock (padlock)
                            {
                                if (data.arpCache.ContainsKey(arpp.ASenderIP))
                                {
                                    if (!Compare(data.arpCache[arpp.ASenderIP], arpp.ASenderMac))
                                    {
                                        PacketMainReturn pmr = new PacketMainReturn(this);
                                        if (data.RectifyAttacks)
                                        {
                                            pmr.returnType = PacketMainReturnType.Edited;
                                        }
                                        else
                                        {
                                            pmr.returnType = PacketMainReturnType.Drop;
                                        }
                                        if (data.LogAttacks)
                                        {
                                            pmr.returnType |= PacketMainReturnType.Log | PacketMainReturnType.Popup;
                                        }
                                        switch (LanguageConfig.GetCurrentLanguage())
                                        {
                                        case LanguageConfig.Language.NONE:
                                        case LanguageConfig.Language.ENGLISH:
                                            pmr.logMessage = "ARP Response from " + new PhysicalAddress(arpp.ASenderMac).ToString() + " for " + arpp.ASenderIP.ToString() + " does not match the ARP cache.";
                                            break;

                                        case LanguageConfig.Language.CHINESE:
                                            pmr.logMessage = new PhysicalAddress(arpp.ASenderMac).ToString() + "为" + arpp.ASenderIP.ToString() + "的ARP响应不匹配的ARP缓存。";
                                            break;

                                        case LanguageConfig.Language.GERMAN:
                                            pmr.logMessage = "ARP Response von " + new PhysicalAddress(arpp.ASenderMac).ToString() + " für " + arpp.ASenderIP.ToString() + " nicht mit dem ARP-Cache.";
                                            break;

                                        case LanguageConfig.Language.RUSSIAN:
                                            pmr.logMessage = "ARP-ответ от " + new PhysicalAddress(arpp.ASenderMac).ToString() + " для " + arpp.ASenderIP.ToString() + " не соответствует кэш ARP.";
                                            break;

                                        case LanguageConfig.Language.SPANISH:
                                            pmr.logMessage = "Respuesta de ARP de " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " no coincide con la caché ARP.";
                                            break;

                                        case LanguageConfig.Language.PORTUGUESE:
                                            pmr.logMessage = "Resposta da ARP " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " não coincide com o cache ARP.";
                                            break;
                                        }
                                        if (data.RectifyAttacks)
                                        {
                                            arpp.ATargetIP  = arpp.ASenderIP;
                                            arpp.ATargetMac = data.arpCache[arpp.ATargetIP];
                                            arpp.ASenderMac = adapter.InterfaceInformation.GetPhysicalAddress().GetAddressBytes();
                                            arpp.FromMac    = arpp.ASenderMac;
                                            arpp.ToMac      = arpp.ATargetMac;
                                            foreach (UnicastIPAddressInformation ipv4 in adapter.InterfaceInformation.GetIPProperties().UnicastAddresses)
                                            {
                                                if (ipv4.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                                                {
                                                    arpp.ASenderIP = ipv4.Address;
                                                    break;
                                                }
                                            }
                                            arpp.Outbound = true;
                                            in_packet     = arpp;
                                        }
                                        return(pmr);
                                    }
                                    else
                                    {
                                        requestedIPs.Remove(ip);
                                    }
                                }
                                else
                                {
                                    data.arpCache[arpp.ASenderIP] = arpp.ASenderMac;
                                    if (UpdatedArpCache != null)
                                    {
                                        UpdatedArpCache();
                                    }
                                    requestedIPs.Remove(ip);
                                }
                            }
                        }
                        else
                        {
                            lock (padlock)
                            {
                                if (data.arpCache.ContainsKey(arpp.ASenderIP))
                                {
                                    if (!Compare(data.arpCache[arpp.ASenderIP], arpp.ASenderMac))
                                    {
                                        PacketMainReturn pmra = new PacketMainReturn(this);
                                        if (data.RectifyAttacks)
                                        {
                                            pmra.returnType = PacketMainReturnType.Edited;
                                        }
                                        else
                                        {
                                            pmra.returnType = PacketMainReturnType.Drop | PacketMainReturnType.Popup;
                                        }
                                        switch (LanguageConfig.GetCurrentLanguage())
                                        {
                                        case LanguageConfig.Language.NONE:
                                        case LanguageConfig.Language.ENGLISH:
                                            pmra.logMessage = "ARP Response from " + new PhysicalAddress(arpp.ASenderMac).ToString() + " for " + arpp.ASenderIP.ToString() + " does not match the ARP cache.";
                                            break;

                                        case LanguageConfig.Language.CHINESE:
                                            pmra.logMessage = new PhysicalAddress(arpp.ASenderMac).ToString() + "为" + arpp.ASenderIP.ToString() + "的ARP响应不匹配的ARP缓存。";
                                            break;

                                        case LanguageConfig.Language.GERMAN:
                                            pmra.logMessage = "ARP Response von " + new PhysicalAddress(arpp.ASenderMac).ToString() + " für " + arpp.ASenderIP.ToString() + " nicht mit dem ARP-Cache.";
                                            break;

                                        case LanguageConfig.Language.RUSSIAN:
                                            pmra.logMessage = "ARP-ответ от " + new PhysicalAddress(arpp.ASenderMac).ToString() + " для " + arpp.ASenderIP.ToString() + " не соответствует кэш ARP.";
                                            break;

                                        case LanguageConfig.Language.SPANISH:
                                            pmra.logMessage = "Respuesta de ARP de " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " no coincide con la caché ARP.";
                                            break;

                                        case LanguageConfig.Language.PORTUGUESE:
                                            pmra.logMessage = "Resposta da ARP " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " não coincide com o cache ARP.";
                                            break;
                                        }
                                        if (data.RectifyAttacks)
                                        {
                                            arpp.ATargetIP  = arpp.ASenderIP;
                                            arpp.ATargetMac = data.arpCache[arpp.ATargetIP];
                                            arpp.ASenderMac = adapter.InterfaceInformation.GetPhysicalAddress().GetAddressBytes();
                                            arpp.FromMac    = arpp.ASenderMac;
                                            arpp.ToMac      = arpp.ATargetMac;
                                            foreach (UnicastIPAddressInformation ipv4 in adapter.InterfaceInformation.GetIPProperties().UnicastAddresses)
                                            {
                                                if (ipv4.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                                                {
                                                    arpp.ASenderIP = ipv4.Address;
                                                    break;
                                                }
                                            }
                                            arpp.Outbound = true;
                                            in_packet     = arpp;
                                        }
                                        return(pmra);
                                    }
                                }
                            }
                            PacketMainReturn pmr = new PacketMainReturn(this);
                            pmr.returnType = PacketMainReturnType.Drop;
                            if (data.LogUnsolic)
                            {
                                pmr.returnType |= PacketMainReturnType.Log;
                            }
                            switch (LanguageConfig.GetCurrentLanguage())
                            {
                            case LanguageConfig.Language.NONE:
                            case LanguageConfig.Language.ENGLISH:
                                pmr.logMessage = "Unsolicited ARP Response from " + new PhysicalAddress(arpp.ASenderMac).ToString() + " for " + arpp.ASenderIP.ToString();
                                break;

                            case LanguageConfig.Language.CHINESE:
                                pmr.logMessage = "未经请求的ARP应答为" + arpp.ASenderIP.ToString() + "从" + new PhysicalAddress(arpp.ASenderMac).ToString();
                                break;

                            case LanguageConfig.Language.GERMAN:
                                pmr.logMessage = "Initiativbewerbung ARP Response von " + new PhysicalAddress(arpp.ASenderMac).ToString() + " für " + arpp.ASenderIP.ToString();
                                break;

                            case LanguageConfig.Language.RUSSIAN:
                                pmr.logMessage = "Незапрошенные ответ ARP от " + new PhysicalAddress(arpp.ASenderMac).ToString() + " для " + arpp.ASenderIP.ToString();
                                break;

                            case LanguageConfig.Language.SPANISH:
                                pmr.logMessage = "Respuesta ARP no solicitados de " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString();
                                break;

                            case LanguageConfig.Language.PORTUGUESE:
                                pmr.logMessage = "Resposta ARP não solicitadas a partir de " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString();
                                break;
                            }
                            return(pmr);
                        }
                    }
                    else
                    {
                        lock (padlock)
                        {
                            if (data.arpCache.ContainsKey(arpp.ASenderIP))
                            {
                                if (!Compare(data.arpCache[arpp.ASenderIP], arpp.ASenderMac))
                                {
                                    PacketMainReturn pmr = new PacketMainReturn(this);
                                    pmr.returnType = PacketMainReturnType.Drop;
                                    if (data.LogAttacks)
                                    {
                                        pmr.returnType |= PacketMainReturnType.Log | PacketMainReturnType.Popup;
                                    }
                                    switch (LanguageConfig.GetCurrentLanguage())
                                    {
                                    case LanguageConfig.Language.NONE:
                                    case LanguageConfig.Language.ENGLISH:
                                        pmr.logMessage = "ARP Response from " + new PhysicalAddress(arpp.ASenderMac).ToString() + " for " + arpp.ASenderIP.ToString() + " does not match the ARP cache.";
                                        break;

                                    case LanguageConfig.Language.CHINESE:
                                        pmr.logMessage = new PhysicalAddress(arpp.ASenderMac).ToString() + "为" + arpp.ASenderIP.ToString() + "的ARP响应不匹配的ARP缓存。";
                                        break;

                                    case LanguageConfig.Language.GERMAN:
                                        pmr.logMessage = "ARP Response von " + new PhysicalAddress(arpp.ASenderMac).ToString() + " für " + arpp.ASenderIP.ToString() + " nicht mit dem ARP-Cache.";
                                        break;

                                    case LanguageConfig.Language.RUSSIAN:
                                        pmr.logMessage = "ARP-ответ от " + new PhysicalAddress(arpp.ASenderMac).ToString() + " для " + arpp.ASenderIP.ToString() + " не соответствует кэш ARP.";
                                        break;

                                    case LanguageConfig.Language.SPANISH:
                                        pmr.logMessage = "Respuesta de ARP de " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " no coincide con la caché ARP.";
                                        break;

                                    case LanguageConfig.Language.PORTUGUESE:
                                        pmr.logMessage = "Resposta da ARP " + new PhysicalAddress(arpp.ASenderMac).ToString() + " para " + arpp.ASenderIP.ToString() + " não coincide com o cache ARP.";
                                        break;
                                    }
                                    return(pmr);
                                }
                            }
                        }
                    }
                    return(null);
                }
                return(null);
            }
            return(null);
        }