Confrontare mac address con una lista

di il
17 risposte

17 Risposte - Pagina 2

  • Re: Confrontare mac address con una lista

    fabiocaruso ha scritto:


    Ho appena fatto la stessa cosa: ho copiato il codice da te modificato, dentro l'evento click di un pulsante (sia con Windows Form che con WPF), e funziona. Solo che il controllo "if" che tu hai messo dopo il foreach, non va bene, perchè lui prende ogni linea del file della MAC-List, e con il ciclo foreach la confronta con la List sMacAddress (che è in memoria e che contiene i MAC del tuo PC). Dovresti fare così:
    
    private void Button_Click(object sender, EventArgs e)
            {
                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                List<string> sMacAddress = new List<string>();  //in questa lista ci andranno tutti i MAC Address del PC      
                foreach (NetworkInterface adapter in nics)
                {
                    string sMac = adapter.GetPhysicalAddress().ToString();
                    if (sMac.Length == 0)
                        break;
                    sMacAddress.Add(sMac.Substring(0, 2) + ":" + sMac.Substring(2, 2) + ":" + sMac.Substring(4, 2) + ":" + sMac.Substring(6, 2) + ":" + sMac.Substring(8, 2) + ":" + sMac.Substring(10, 2));
                }
    
                using (StreamReader macList = new StreamReader("MAF.txt"))
                {
                    string linea;
                    bool inizio = false;
                    bool infetto = false;
                    while ((linea = macList.ReadLine()) != null)
                    {
                        if (linea.Contains("MAC - list"))   //cerca nel file l'inizio della lista dei MAC Address
                        {
                            inizio = true;
                            continue;
                        }
                        if (inizio == true)
                        {
                            foreach (string mca in sMacAddress)
                            {
                                if (linea.Contains(mca.ToLower()))
                                {
                                    MetroFramework.MetroMessageBox.Show(this, "Your computer may be infected!!", "ATTENTION", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    infetto = true;
                                    break;
                                }                                                                
                            }                        
                        }                                             
                    }
                    if (infetto == false)
                    {
                        MetroFramework.MetroMessageBox.Show(this, "Your computer is clear :)", "All done !", MessageBoxButtons.OK, MessageBoxIcon.Question);
                    }
                }
            }
    
    In altre parole, puoi dichiarare che il tuo PC è pulito, solo dopo che hai finito i controlli su tutte le linee del file
    Ti ringrazio nuovamente, funziona tutto, l'unico problema è: nel "mac show" uno dei pulsanti che ho messo, dovrei a questo punto stampare la lista che tu hai creato. Momentaneamente ho trovato questa soluzione, ma sembra dare qualche problemino. Mi ci immergo nuovamente, ma se per caso sai dove sto sbagliando mi faresti un favore! MANCA POCOOOOO

    l'errore generato da questa mia funzione è il seguente: System.Collections.Generic.List`1[System.String]
    
             // carico i mac address 
             
                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                List<string> sMacAddress = new List<string>();  //in questa lista ci andranno tutti i MAC Address del PC      
    
                foreach (NetworkInterface adapter in nics)
                {
                    string sMac = adapter.GetPhysicalAddress().ToString();
                    if (sMac.Length == 0)
                        break;
                    sMacAddress.Add(sMac.Substring(0, 2) + ":" + sMac.Substring(2, 2) + ":" + sMac.Substring(4, 2) + ":" + sMac.Substring(6, 2) + ":" + sMac.Substring(8, 2) + ":" + sMac.Substring(10, 2));
                }
    
     // teorica funzione per stampare 
     
                StringBuilder sb = new StringBuilder();
                foreach (NetworkInterface adapter in nics)
                {
                    sb.AppendLine(sMacAddress.ToString());
    
                }
                
                    MetroFramework.MetroMessageBox.Show(this, sb.ToString(), "Your MAC ADDRESS", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
    
  • Re: Confrontare mac address con una lista

    Così:
    // teorica funzione per stampare 
    
                StringBuilder sb = new StringBuilder();
                foreach (string mac in sMacAddress)
                {
                    sb.AppendLine(mac);
                }
                MetroFramework.MetroMessageBox.Show(this, sb.ToString(), "Your MAC ADDRESS", MessageBoxButtons.OK, MessageBoxIcon.Information);
  • Re: Confrontare mac address con una lista

    fabiocaruso ha scritto:


    Così:
    // teorica funzione per stampare 
    
                StringBuilder sb = new StringBuilder();
                foreach (string mac in sMacAddress)
                {
                    sb.AppendLine(mac);
                }
                MetroFramework.MetroMessageBox.Show(this, sb.ToString(), "Your MAC ADDRESS", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Perdonate la mia assenza, ma ho avuto da fare molto ultimamente. Mi appresto ad arrivare alla fase conclusiva, manca solo questa funzione da implementare, tuttavia mi dice " Il nome 'sMacAddress' non esiste nel contesto corrente". Deduco che l'errore sia dato perchè abbiamo dichiarato la variabile sMacAddress come locale. a questo punto mi si aprono due strade, a quanto ho capito. Spostare la dichiarazione della variabile come globale, o eseguire un passaggio parametri

    Ho temporaneamente pubblicato il codice in pastebin, per consentire eventuali collaboratori di capire meglio! La funzione "incriminata" dall'errore si trova in fondo (è l'ultima funzione)

    LINK: https://pastebin.com/yw2qVEq
Devi accedere o registrarti per scrivere nel forum
17 risposte