Example #1
0
        public NetworkWatcher(IBeamgunSettings settings, Report report, TripAlarm alarm)
        {
            var networkQuery = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_NetworkAdapter\"");

            _watcher = new ManagementEventWatcher(networkQuery);
            _watcher.EventArrived += (caller, args) =>
            {
                var obj          = (ManagementBaseObject)args.NewEvent["TargetInstance"];
                var alertMessage = $"Alerting on network adapter insertion: " +
                                   $"{obj["AdapterType"]} " +
                                   $"{obj["Caption"]} " +
                                   $"{obj["Description"]} " +
                                   $"{obj["DeviceID"]} " +
                                   $"{obj["GUID"]} " +
                                   $"{obj["MACAddress"]} " +
                                   $"{obj["Manufacturer"]} " +
                                   $"{obj["Name"]} " +
                                   $"{obj["PermanentAddress"]} " +
                                   $"{obj["NetworkAddresses"]} " +
                                   $"{obj["ProductName"]} " +
                                   $"{obj["ServiceName"]} " +
                                   $"{obj["SystemCreationClassName"]} " +
                                   $"{obj["SystemName"]} ";
                alarm(alertMessage);
                if (!settings.DisableNetworkAdapter)
                {
                    return;
                }
                // TODO: Parse out into separate class?
                var query    = $"SELECT * FROM Win32_NetworkAdapter WHERE DeviceID = \"{obj["DeviceID"]}\"";
                var searcher = new ManagementObjectSearcher(query);
                foreach (var item in searcher.Get())
                {
                    var managementObject = (ManagementObject)item;
                    try
                    {
                        var disableCode = (uint)managementObject.InvokeMethod("Disable", null);
                        report(disableCode == 0
                            ? "Network adapter successfully disabled."
                            : $"Danger! Unable to disable network adapter: {disableCode}");
                        return;
                    }
                    catch (ManagementException e)
                    {
                        report($"Error disabling new network adapter: {e}");
                    }
                }
            };
            _watcher.Start();
        }
Example #2
0
        public KeyboardWatcher(IBeamgunSettings settings, WorkstationLocker locker, Report report, TripAlarm alarm)
        {
            var keyboardQuery = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Keyboard\"");

            _watcher = new ManagementEventWatcher(keyboardQuery);
            _watcher.EventArrived += (caller, args) =>
            {
                var obj = (ManagementBaseObject)args.NewEvent["TargetInstance"];
                alarm($"Alerting on keyboard insertion: " +
                      $"{obj["Name"]} " +
                      $"{obj["Caption"]} " +
                      $"{obj["Description"]} " +
                      $"{obj["DeviceID"]} " +
                      $"{obj["Layout"]} " +
                      $"{obj["PNPDeviceID"]}.");
                if (!settings.LockWorkstation)
                {
                    return;
                }
                report(locker.Lock()
                    ? "Successfully locked the workstation."
                    : "Could not lock the workstation.");
            };
            _watcher.Start();
        }