Ejemplo n.º 1
0
        static Kvrlib.Status doScanNetwork(Kvrlib.ConfigHnd handle)
        {
            Kvrlib.Status status;
              Kvrlib.Status stat;

              Int32 active = 0;   //is a passive scan
              Kvrlib.Bss bss_type = Kvrlib.Bss.ANY;  //infrastruction and adhoc
              Kvrlib.RegulatoryDomain domain = Kvrlib.RegulatoryDomain.WORLD;

              string ssid = "";
              string securityString = "";

              Int32 rssi = 0;
              Int32 channel = 0;
              Kvrlib.Address mac;
              Int32 capability;
              Int32 type_wpa;
              Kvrlib.CipherInfoElement wpa_info = new Kvrlib.CipherInfoElement();
              Kvrlib.CipherInfoElement rsn_info = new Kvrlib.CipherInfoElement();

              status = Kvrlib.WlanStartScan(handle, active, bss_type, domain);

              if (!status.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not start scan " + Convert.ToInt32(status));
              return status;
            }

              do
            {
              status = Kvrlib.WlanGetScanResults(handle, ref rssi, ref channel, out mac, out bss_type, out ssid,
                                             out capability, out type_wpa, out wpa_info, out rsn_info);

              if(status.Equals(Kvrlib.Status.OK))
            {
              String tmp_address;
              Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -");
              Console.WriteLine("SSID: " + ssid);
              Console.WriteLine("RSSI: " + rssi +" dBm");
              Console.WriteLine("WLAN Channel: " + channel);
              status = Kvrlib.StringFromAddress(out tmp_address, mac);
              if (!status.Equals(Kvrlib.Status.OK))
                {
                  Console.WriteLine("Could convert string from address (" + status + ")");
                  return status;
                }
              Console.WriteLine("MAC address: " + tmp_address);
              Console.WriteLine("BSS type: " + bss_type);
              Console.WriteLine("Capabilities: {0:X}", capability);

              stat = Kvrlib.WlanGetSecurityText(out securityString, capability, type_wpa, wpa_info, rsn_info);
              Console.Write("Security");
              if (stat.Equals(Kvrlib.Status.PARAMETER))
                {
                  Console.Write("(Truncated)");
                }
              Console.WriteLine(": " + securityString);
            }
            }
              while(status.Equals(Kvrlib.Status.OK) || status.Equals(Kvrlib.Status.NO_ANSWER));

              // Kvrlib.Status.BLANK => no more networks => OK
              return (status.Equals(Kvrlib.Status.BLANK) ? Kvrlib.Status.OK : status);
        }
Ejemplo n.º 2
0
        static int Main(string[] args)
        {
            String password = "";
              string xml_config = "";
              Kvrlib.Status kvrstat;
              Kvrlib.ConfigHnd configHandle = new Kvrlib.ConfigHnd();
              Kvrlib.Address address = new Kvrlib.Address();
              Kvrlib.CipherInfoElement cipherInfoElement = new Kvrlib.CipherInfoElement();

              Int32 i;
              Int32 cur_profile;
              Int32 canlib_channel;
              Int32 no_profiles;

              object serial;
              object ean;

              Canlib.canStatus stat = new Canlib.canStatus();

              Canlib.canInitializeLibrary();
              Kvrlib.InitializeLibrary();

              switch (args.Length)
            {
            case 0:
              listDevices();
              return 0;
            case 1:
              canlib_channel = args[0][0] - '0';
              break;
            default:
              listDevices();
              return -1;
            }

              stat = Canlib.canGetChannelData(canlib_channel, Canlib.canCHANNELDATA_CARD_UPC_NO,out ean);
              stat = Canlib.canGetChannelData(canlib_channel, Canlib.canCHANNELDATA_CARD_SERIAL_NO, out serial);

              if (isAvailibleForConfig(canlib_channel, password))
            {
              Console.WriteLine("Channel " + canlib_channel + " is availible for configuration");
            }
              else
            {
              Console.WriteLine("Channel " + canlib_channel + " can not be opend for configuration");
              Canlib.canUnloadLibrary();
              return -1;
            }
              Canlib.canUnloadLibrary();

              //----------------------------------------------------------------------------
              // List number of profiles

              kvrstat = Kvrlib.ConfigNoProfilesGet(canlib_channel, out no_profiles);
              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Device does not support profiles " + kvrstat);
              return Convert.ToInt32(kvrstat);
            }
              Console.WriteLine("Device supports " + no_profiles + " profiles.");

              Kvrlib.ConfigActiveProfileGet(canlib_channel, out cur_profile);
              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not get active profile number " + kvrstat);
              return Convert.ToInt32(kvrstat);
            }
              Console.WriteLine("Active profile is: " + cur_profile);

              // Show profiles
              for (i = 0; i < no_profiles; i++)
            {
              kvrstat = Kvrlib.ConfigInfoGet(canlib_channel, i, out xml_config);
              if (kvrstat.Equals(Kvrlib.Status.BLANK))
            {
              Console.WriteLine("Profile " + i + " is blank.");
            }
              else if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not read profile " + i);
              return Convert.ToInt32(kvrstat);
            }
              else
            {
              Console.WriteLine("Profile " + i + ":\n" + xml_config);
            }
            }

              //----------------------------------------------------------------------------
              // Start configuration - read only
              kvrstat = Kvrlib.ConfigOpenEx(canlib_channel,
                                    Kvrlib.ConfigMode.R,
                                    password,
                                    out configHandle,
                                    cur_profile);

              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not start config " + kvrstat);
              return Convert.ToInt32(kvrstat);
            }

              // List available networks. This information could be
              // helpful when creating the XML configuration.

              kvrstat = doScanNetwork(configHandle);
              Kvrlib.ConfigClose(configHandle);

              //----------------------------------------------------------------------------
              // Start configuration - read/write

              kvrstat = Kvrlib.ConfigOpen(canlib_channel, Kvrlib.ConfigMode.RW, password, out configHandle);

              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not start config " + kvrstat);
              return Convert.ToInt32(kvrstat);
            }

              kvrstat = doConfigure(configHandle);

              // Done!
              Kvrlib.ConfigClose(configHandle);

              // Wait for reboot
              if (waitForDevice(ean, serial, 10000) != 0)
            { //10s timeout
              Console.WriteLine("waitForDevice() failed.");
              return -1;
            }

              //----------------------------------------------------------------------------
              // Start configuration - read only
              kvrstat = Kvrlib.ConfigOpen(canlib_channel, Kvrlib.ConfigMode.R, password, out configHandle);

              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Could not start config " + kvrstat);
              return Convert.ToInt32(kvrstat);
            }

              kvrstat = doTryConfigure(configHandle, 5, ean, serial);
              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("doTryConfiguration failed (" + kvrstat + ")");
              return Convert.ToInt32(kvrstat);
            }
              Kvrlib.ConfigClose(configHandle);
              Console.WriteLine("\nDone!");

              Console.WriteLine("Clear the last profile");
              kvrstat = Kvrlib.ConfigActiveProfileSet(canlib_channel, no_profiles - 1);
              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Set profile " + (no_profiles - 1) + " failed (" + kvrstat + ")");
              return Convert.ToInt32(kvrstat);
            }

              // Wait for reboot
              if (waitForDevice(ean, serial, 10000) != 0)
            { //10s timeout
              Console.WriteLine("waitForDevice() failed.");
              return -1;
            }

              eraseConfiguration(canlib_channel, password);

              // Wait for reboot
              if (waitForDevice(ean, serial, 10000) != 0)
            { //10s timeout
              Console.WriteLine("waitForDevice() failed.");
              return -1;
            }

              Console.WriteLine("Set profile 0 as active");
              kvrstat = Kvrlib.ConfigActiveProfileSet(canlib_channel, 0);
              if (!kvrstat.Equals(Kvrlib.Status.OK))
            {
              Console.WriteLine("Set profile " + 0 + " failed (" + kvrstat + ")");
              return Convert.ToInt32(kvrstat);
            }

              Kvrlib.UnloadLibrary();
              return 0;
        }