Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-07-2011, 19:05   #1
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
[C#] Connettersi ad una rete wifi

Salve a tutti,
sto cervcando di creare un programmino in C# che si collegi ad una determinata rete wifi protetta in WPA.
In rete ho trovato la libreria "ManagedWifi.dll" e più precisamente sono andato a visitare questa pagina web : http://managedwifi.codeplex.com/

Ho scaricato il codice sorgente che postano come esempio ma non riesco a capire l' ultima parte, quella dove il client si connette alla rete.

Posto il codice.

Codice:
using NativeWifi;
using System;
using System.Text;

namespace WifiExample
{
    class Program
    {
        /// <summary>
        /// Converts a 802.11 SSID to a string.
        /// </summary>
        static string GetStringForSSID(Wlan.Dot11Ssid ssid)
        {
            return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength );
        }

        static void Main( string[] args )
        {
            WlanClient client = new WlanClient();
            foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
            {
                // Lists all networks with WEP security
                Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
                foreach ( Wlan.WlanAvailableNetwork network in networks )
                {
                    if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
                    {
                        Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
                    }
                }

                // Retrieves XML configurations of existing profiles.
                // This can assist you in constructing your own XML configuration
                // (that is, it will give you an example to follow).
                foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() )
                {
                    string name = profileInfo.profileName; // this is typically the network's SSID
                    string xml = wlanIface.GetProfileXml( profileInfo.profileName );
                }

                // Connects to a known network with WEP security
                string profileName = "Cheesecake"; // this is also the SSID
                string mac = "52544131303235572D454137443638";
                string key = "hello";
                string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
            }
        }
    }
}
Ecco riuscete a spiegarmi l' ultima parte del codice, quella riguardante la connessione alla rete ?

Grazie in anticipo
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2011, 12:04   #2
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
Quote:
Originariamente inviato da pare93 Guarda i messaggi
Salve a tutti,
sto cervcando di creare un programmino in C# che si collegi ad una determinata rete wifi protetta in WPA.
In rete ho trovato la libreria "ManagedWifi.dll" e più precisamente sono andato a visitare questa pagina web : http://managedwifi.codeplex.com/

Ho scaricato il codice sorgente che postano come esempio ma non riesco a capire l' ultima parte, quella dove il client si connette alla rete.

Posto il codice.
k
Codice:
using NativeWifi;
using System;
using System.Text;

namespace WifiExample
{
    class Program
    {
        /// <summary>
        /// Converts a 802.11 SSID to a string.
        /// </summary>
        static string GetStringForSSID(Wlan.Dot11Ssid ssid)
        {
            return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength );
        }

        static void Main( string[] args )
        {
            WlanClient client = new WlanClient();
            foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
            {
                // Lists all networks with WEP security
                Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
                foreach ( Wlan.WlanAvailableNetwork network in networks )
                {
                    if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
                    {
                        Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
                    }
                }

                // Retrieves XML configurations of existing profiles.
                // This can assist you in constructing your own XML configuration
                // (that is, it will give you an example to follow).
                foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() )
                {
                    string name = profileInfo.profileName; // this is typically the network's SSID
                    string xml = wlanIface.GetProfileXml( profileInfo.profileName );
                }

                // Connects to a known network with WEP security
                string profileName = "Cheesecake"; // this is also the SSID
                string mac = "52544131303235572D454137443638";
                string key = "hello";
                string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
            }
        }
    }
}
Ecco riuscete a spiegarmi l' ultima parte del codice, quella riguardante la connessione alla rete ?

Grazie in anticipo
spiega bene quale e' il problema, cosa non capisci? che riga del codice ti e' oscura?
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2011, 12:20   #3
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Codice:
string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
Innanzitutto non capisco cosa indica la stringa "profileXml", leggendo serve per inserire i parametri della connessione.
E il metodo "SetProfile" vorrei sapere cosa fa di preciso e quindi anche il metodo "Connect".

Ecco questa è la parte che mi è oscura
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2011, 17:05   #4
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Riporto una parte di codice dove mi dà errore.

Codice:
string nomeProfilo = lstNetwork[0].profileName;
                string mac = Convert.ToString(wlanInterface.InterfaceGuid);
                string pass = "mia_password";
                string profiloXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{1}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", nomeProfilo, pass);
                wlanInterface.SetProfile(Wlan.WlanProfileFlags.AllUser, profiloXml, true);
                wlanInterface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, nomeProfilo);
Dove wlanInterface è dato da :

NativeWifi.WlanClient wlanclient = new NativeWifi.WlanClient();
wlanInterface = wlanClient.Interfaces[index];

L' errore che mi dà è riportato all' interno della libreria "NativeWifi".
Posto il metodo dove il compilatore mi trova l' errore.

Codice:
public Wlan.WlanReasonCode SetProfile(Wlan.WlanProfileFlags flags, string profileXml, bool overwrite)
			{
				Wlan.WlanReasonCode reasonCode;
				Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));
				return reasonCode;
			}
E dice che il profilo è danneggiato.

Però a me sembra di aver impostato come codice SSID quello giusto e la pass nel foglio XML.

Help me!
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2011, 19:01   #5
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
SetProfile fa questo:

Codice:
/// <summary>
			/// Sets the profile.
			/// </summary>
			/// <param name="flags">The flags to set on the profile.</param>
			/// <param name="profileXml">The XML representation of the profile. On Windows XP SP 2, special care should be taken to adhere to its limitations.</param>
			/// <param name="overwrite">If a profile by the given name already exists, then specifies whether to overwrite it (if <c>true</c>) or return an error (if <c>false</c>).</param>
			/// <returns>The resulting code indicating a success or the reason why the profile wasn't valid.</returns>
			public Wlan.WlanReasonCode SetProfile(Wlan.WlanProfileFlags flags, string profileXml, bool overwrite)
			{
				Wlan.WlanReasonCode reasonCode;
				Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));
				return reasonCode;
			}


In sostanza passa il profilo del client che si sta collegando e restituisce lo stato, ovvero se è stato accettato o meno il profilo passato al router.



Codice:
string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );

non fa altro che creare una stringa che contiene il testo dell'ipotetico file xml che il router accetta in ingresso con tutti i settaggi.


che versione di windows utilizzi?
hai almeno windows Xp? se usi Xp ricordati che devi applicare la hotfix KB article 918997 come indicato sul sito che hai linkato.

Io purtroppo uso Visual Studio 2010 e il progetto è fatto in unaversione piu vecchia e mettermi a convertirlo per provarlo diventa na rottura di p... !

Comuqnue fai un debug e passo passo guarda in che riga ti da errore e l'errore che ti restituisce postalo qua.
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2011, 11:01   #6
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Devo dire che uso anche io Visual studio 2010 e ho convertito il progetto senza problemi.

Comunque l' errore che mi dà e proprio sulle stringhe di codice che hai postato :

Codice:
public Wlan.WlanReasonCode SetProfile(Wlan.WlanProfileFlags flags, string profileXml, bool overwrite)
			{
				Wlan.WlanReasonCode reasonCode;
				Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));
				return reasonCode;
			}
Sono relative al settaggio del profilo che si connette al router da come mi hai accennato.
L' errore è "profilo danneggiato".

Come parametri nel foglio XML gli dò :

- nomeProfilo = SSID del router ( alice-00000000)
- indirizzoMac = indirizzo fisico
- key = password del mio router

Ciao.
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2011, 14:45   #7
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
Quote:
Originariamente inviato da pare93 Guarda i messaggi
Devo dire che uso anche io Visual studio 2010 e ho convertito il progetto senza problemi.

Comunque l' errore che mi dà e proprio sulle stringhe di codice che hai postato :

Codice:
public Wlan.WlanReasonCode SetProfile(Wlan.WlanProfileFlags flags, string profileXml, bool overwrite)
			{
				Wlan.WlanReasonCode reasonCode;
				Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));
				return reasonCode;
			}
Sono relative al settaggio del profilo che si connette al router da come mi hai accennato.
L' errore è "profilo danneggiato".

Come parametri nel foglio XML gli dò :

- nomeProfilo = SSID del router ( alice-00000000)
- indirizzoMac = indirizzo fisico
- key = password del mio router

Ciao.


Se gli stai passando come passoword del tuo router la frase che hai scelto come password (esempio: AUTOMOBILE), prova a passargli la tua parola chiave tradotta in codice esadecimale tipo: E514D495
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2011, 09:13   #8
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Niente da fare
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2011, 16:03   #9
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Qualcuno sa come usare questa library per collegarsi ad un access point ?
Grazie mille.
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2011, 13:11   #10
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Questo viene da un programma che avevo fatto tempo fa ( che secondo me faceva la stessa cosa che vuoi far tu visto il router alice )

Codice:
            String profileXml = string.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>auto</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>WPAPSK</authentication><encryption>TKIP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{1}</keyMaterial></sharedKey></security></MSM></WLANProfile>", SSID, password);

            WlanClient.WlanInterface wlanIface = new WlanClient().Interfaces[0];

            Wlan.WlanReasonCode reasonasdasdasd = wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);

            wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, SSID);
Se non ricordo male funzionava!
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2011, 19:10   #11
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
Quote:
Originariamente inviato da Kenger Guarda i messaggi
Questo viene da un programma che avevo fatto tempo fa ( che secondo me faceva la stessa cosa che vuoi far tu visto il router alice )

Codice:
            String profileXml = string.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>auto</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>WPAPSK</authentication><encryption>TKIP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{1}</keyMaterial></sharedKey></security></MSM></WLANProfile>", SSID, password);

            WlanClient.WlanInterface wlanIface = new WlanClient().Interfaces[0];

            Wlan.WlanReasonCode reasonasdasdasd = wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);

            wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, SSID);
Se non ricordo male funzionava!

Ok, Grazie mille. Lo provo il prima possibile.
Per caso sai anche se è possibile costruire una rete ad hoc con questa libreria?
pare93 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2011, 10:13   #12
pare93
Member
 
L'Avatar di pare93
 
Iscritto dal: Jul 2009
Messaggi: 268
up
pare93 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Qualcomm 'schiaccia' Arm in tribunale: v...
Meta spinge sull'indipendenza da NVIDIA:...
Spotify rivoluziona la sua guida: Daniel...
Sora 2: la seconda generazione del model...
Nuovo obiettivo FE 100mm F2.8 Macro GM O...
Steelseries Arctis Nova Elite: le prime ...
30 anni di PlayStation da indossare: arr...
Amazon lancia gli Echo più potent...
Amazon rinnova la gamma Fire TV: ecco le...
Ring lancia le sue prime videocamere con...
Blink amplia la gamma di videocamere di ...
Jaguar Land Rover riprende (gradualmente...
HONOR inaugura il primo ALPHA Flagship S...
Yamaha: ecco il brevetto del 'finto moto...
'Console obsoleta e utenti ingannati': u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:32.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v