Esempio n. 1
0
        public RESTStatus ListRKData(SQLLib sql, object dummy, NetworkConnectionInfo ni, string id)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (string.IsNullOrWhiteSpace(id) == true)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.NotFound);
            }

            lock (ni.sqllock)
            {
                if (Computers.MachineExists(sql, id) == false)
                {
                    ni.Error   = "Invalid data";
                    ni.ErrorID = ErrorFlags.InvalidData;
                    return(RESTStatus.NotFound);
                }
            }

            LstRKData           = new BitlockerRKList();
            LstRKData.List      = new List <BitlockerRK>();
            LstRKData.MachineID = id;

            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("SELECT * FROM BitlockerRK WHERE MachineID=@m",
                                                     new SQLParam("@m", id));
                while (dr.Read())
                {
                    BitlockerRK rk = new BitlockerRK();
                    rk.DeviceID    = Convert.ToString(dr["DeviceID"]);
                    rk.DriveLetter = Convert.ToString(dr["DriveLetter"]);
                    rk.Reported    = SQLLib.GetDTUTC(dr["Reported"]);
                    rk.Keys        = JsonConvert.DeserializeObject <List <BitlockerRKKeyElement> >(Convert.ToString(dr["Keys"]));
                    LstRKData.List.Add(rk);
                }
                dr.Close();
            }

            return(RESTStatus.Success);
        }
Esempio n. 2
0
        static List <BitlockerRK> GetRKs()
        {
            List <BitlockerRK> lst = new List <BitlockerRK>();
            uint Error;

            ManagementClass mc;

            try
            {
                mc = new ManagementClass("ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption", "Win32_EncryptableVolume", null);
                mc.GetInstances();
            }
            catch (Exception ee)
            {
                Debug.WriteLine(ee.ToString());
                return(null);
            }

            foreach (ManagementObject mo in mc.GetInstances())
            {
                BitlockerRK rk = new BitlockerRK();
                rk.DeviceID    = Convert.ToString(mo["DeviceID"]);
                rk.DriveLetter = Convert.ToString(mo["DriveLetter"]);
                rk.Keys        = new List <BitlockerRKKeyElement>();
                rk.Reported    = DateTime.UtcNow;

                ManagementBaseObject inparams2 = mo.GetMethodParameters("GetKeyProtectors");
                inparams2["KeyProtectorType"] = 3;
                ManagementBaseObject outparams2 = mo.InvokeMethod("GetKeyProtectors", inparams2, null);
                Error = Convert.ToUInt32(outparams2["returnValue"]);
                if (Error != 0)
                {
                    continue;
                }

                string[] keys = (string[])outparams2["VolumeKeyProtectorID"];
                if (keys == null)
                {
                    return(null);
                }

                foreach (string key in keys)
                {
                    ManagementBaseObject inparams = mo.GetMethodParameters("GetKeyProtectorNumericalPassword");
                    inparams["VolumeKeyProtectorID"] = key;
                    ManagementBaseObject outparams = mo.InvokeMethod("GetKeyProtectorNumericalPassword", inparams, null);
                    Error = Convert.ToUInt32(outparams["returnValue"]);
                    if (Error != 0)
                    {
                        return(null);
                    }

                    BitlockerRKKeyElement rkk = new BitlockerRKKeyElement();
                    rkk.Key = Convert.ToString(outparams["NumericalPassword"]);
                    rkk.VolumeKeyProtectorID = key;
                    rk.Keys.Add(rkk);
                }
                lst.Add(rk);
            }

            return(lst);
        }