Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
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


Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Xiaomi 18 Pro e 18 Pro Max, i nuovi flag...
ESA e Mistral hanno stretto un accordo p...
AstroForge presenta Autonomy-1: un satel...
Neutralizzata da Microsoft EvilTokens, l...
Porsche mette alla prova i Tesla Superch...
Roborock Saros 20 Flow Complete arriva i...
Basta un comando digitato nel terminale ...
La corsa alla superintelligenza è...
Le memorie cinesi sfidano sé stes...
Dash cam 4K con doppia telecamera, GPS, ...
Qwen 4: Alibaba conferma l'addestramento...
Super El Niño, allarme globale: 451.000 ...
Toyota, 400.000 robot in fabbrica senza ...
Hanno bucato l'FBI e ora dettano le cond...
Standard sì, licenze no: la linea di Ope...
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: 04:08.


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